关于按照不同的标准设定每行表格中内嵌控件的方法

今天小芸在做表格控件的时候遇到一个问题,即根据不同的情况设定不同行的RspostoryItemEdit控件的属性,她用的是Button,于是我开始研究怎么做,大概想到了两种思路,一种是在绑定完数据源后,遍历每一行,设定RspostoryItemEdit控件的属性,先获取到单元格,然后将单元格转化为控件类型,但实际操作中发现,利用   GridView.GetRowCellValue  方法发现获取到的仅仅是该单元格的值,非为控件,于是这种思路放弃了。

第二种思路是,在绑定数据源的时候,也就是RspostoryItem生成或者在其绘制的时候修改其属性,第二种成功了,现代码如下:

      1.根据不同列名设置所有的RepositoryItem 情况;

在表格的CustomRowCellEdit事件中做如下处理,就可以根据girdview中的每行状态不同,分别设置每行repositoryitembuttonedit的属性
  private void grdvMain_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e)
         {
          RepositoryItemButtonEdit button = new DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit();
                        button.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
                        button.Buttons[0].Kind = DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph;
                        button.Click += new EventHandler(button_Click);
                        e.RepositoryItem = button;   //这一句位置有待商榷,这样写整个表格都不会出来

switch (e.Column.FieldName)   //此处为根据列的不同名称设定不同的RepositoryItem 情况,
                        {
                            case "A":
                                  button.Buttons[0].Caption = "A"
                                break;
                            case "B":
                                  button.Buttons[0].Caption = "B"
                                break;
                            case "C":
                                 button.Buttons[0].Caption = "C";
                                break;
                            default:
                                break;
                        }
}

      2.根据每行记录设置所有的RepositoryItem 情况;

private void grdvMain_CustomRowCellEdit(object sender, CustomRowCellEditEventArgs e)
         {  

      if(e.Column==控件在的列)

      {
          RepositoryItemButtonEdit button = new DevExpress.XtraEditors.Repository.RepositoryItemButtonEdit();
                        button.TextEditStyle = DevExpress.XtraEditors.Controls.TextEditStyles.HideTextEditor;
                        button.Buttons[0].Kind = DevExpress.XtraEditors.Controls.ButtonPredefines.Glyph;
                        button.Click += new EventHandler(button_Click);
                        e.RepositoryItem = button;   //这一句位置有待商榷,这样写整个表格都不会出来
      }
                        switch (e.CellValue)   //此处为根据列的每行值设定不同的RepositoryItem 情况,
                        {
                            case "A":
                                  button.Buttons[0].Caption = "A"
                                break;
                            case "B":
                                  button.Buttons[0].Caption = "B"
                                break;
                            case "C":
                                 button.Buttons[0].Caption = "C";
                                break;
                            default:
                                break;
                        }
}

      

需要注意的有以下几点

      1.RepositoryItemButtonEdit .Buttons属性是讲RepositoryItemButtonEdit 中有几个Button,是一个枚举类型,并且和Grid的行数无关,仅仅是设计器中的东西,有1个,单元格中有一个按钮,有两个,单元格中就有两个按钮;

      2.此种方法不仅适用于GridView,也适用于LayoutView视图;

时间: 2024-10-09 09:20:51

关于按照不同的标准设定每行表格中内嵌控件的方法的相关文章

100行代码解析Dojo树控件拖拽案例

案例设定: 创建2个树控件,左右排列. 使用拖动的方式,将树节点从左侧树控件拖拽的右侧树控件. 拖拽过程中右侧树控件要进行验证,确认是否可以方式拖拽中的节点. 放置的处理,识别要放置的节点,获取其信息并动态创建新的节点(基于基础类型进行实例化的过程). 右侧树控件内(实例化之后的节点),同类型节点间支持拖动排序. Dojo版本 1.10.3 图例1:创建2个树控件,左右排列. 图例2.3: 使用拖动的方式,将树节点从左侧树控件拖拽的右侧树控件. 拖拽过程中右侧树控件要进行验证,确认是否可以方式拖

第一行代码Android-------第二章控件部分

一.控件 1.大小 match_parenr:与父布局大小一样 fill_parent:与match_parent一样 wrap_content:控件大小刚好包住里面内容 2.TextView   在界面上显示一段文字 android:text = "显示的文字" android:gravity:"文字对齐方式" //可选值有top.bottom.right.center,可以用|来指定多个值 android:textSize:文字大小 android:textCo

在Bootstrap开发框架中使用dataTable直接录入表格行数据(2)--- 控件数据源绑定

在前面随笔<在Bootstrap开发框架中使用dataTable直接录入表格行数据>中介绍了在Web页面中使用Jquery DataTable插件进行对数据直接录入操作,这种处理能够给用户提供较好的数据录入体验,本篇继续上篇的内容,继续介绍这个直接录入的处理操作,主要涉及到控件的初始化和数据源的绑定等操作内容,随着对这个处理的深入了解,我发现可以控制的内容也更加丰富,能够更好的实现各种所需的效果. 1.直接录入数据的界面分析 在之前介绍的数据直接录入处理的时候,界面效果如下所示. 上面的界面处

Winform中使用用户控件实现带行数和标尺的RichTextBox(附代码下载)

场景 RichTextBox控件允许用户输入和编辑文本的同时提供了比普通的TextBox控件更高级的格式特征. 效果 注: 博客主页: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建一个用户控件GuageRichTextBox. 编辑用户控件,相当于自己定义了一个控件,和其他控件一样在窗体中使用,是一个类. 然后打开其设计页面,放置一个RichTextBox 然后进入其代码 usi

DATAX 实现jpython调用cmd 系统控制台,实现在开发工具中内嵌datax (python 多行执行cmd命令)

上代码 1 import os 2 if __name__=='__main__': 3 str="CHCP 65001"+"&&" 4 str+="E:"+"&&" 5 str += "cd E:\\DATAX\\datax\\bin" + "&&" 6 str += "python datax.py " + &quo

GTK常用控件之行编辑( GtkEntry )

行编辑,只允许输入一行内容的控件,如密码输入框. 行编辑的创建: GtkWidget *gtk_entry_new(void); 返回值:行编辑指针 设置行编辑内容的最大长度: void gtk_entry_set_max_length(GtkEntry *entry, gint max); entry:行编辑 max:长度的最大值,这里填0代表长度不作限制 设置行编辑的文本内容: void gtk_entry_set_text(GtkEntry *entry, const gchar *tex

设定当前视图中所有控件字体的方法

     本范例实现的是对界面中所有的控件一次性的设置字体样式.思路是找到父控件,然后遍历子控件.如果子控件是可以修改文字的控件,那么就设置文字.这用到了控件的继承,很多控件都是继承与textview的,所以将控件均转为textview,最后设置字体即可. 布局文件 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.

DevExpress控件使用经验总结- GridView列表行号显示操作

DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.本文主要介绍我在使用DevExpress控件过程中,遇到或者发现的一些问题解决方案,或者也可以所示一些小的经验总结.总体来讲,使用DevExpress控件,可以获得更高效的界面设计以及更美观的效果.本文主要通过给出相应的例子以及相关界面效果来说明问题,希望大家能够从中获得好的知识和思路. 1. 应用Office2007和Office2010的界面主题 开始使用DevExpress的时候,发现程序界

C#:使用快捷菜单(ContextMenuStrip)删除DataGridView控件指定行

工作中遇到一个场景:在DataGridView上单击鼠标右键弹出快捷菜单,在快捷菜单内需要有"删除本行"."清空数据"等按钮,于是我就自己实现了一个: 实现步骤如下: 步骤1,建立一个C#下的Windows窗体应用程序,取名DgvMenuStripTest 步骤2,主窗体内的控件只有一个名为dgvTest的DataGridView,对这个DataGridView启用添加.启用编辑.启用删除,并设置其在父容器中停靠 步骤3,为这个DataGridView添加Mouse