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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于按照不同的标准设定每行表格中内嵌控件的方法相关的知识,希望对你有一定的参考价值。

今天小芸在做表格控件的时候遇到一个问题,即根据不同的情况设定不同行的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视图;

以上是关于关于按照不同的标准设定每行表格中内嵌控件的方法的主要内容,如果未能解决你的问题,请参考以下文章

WinForm中内嵌WebBroswer

CSS如何设定li盒子里字数的长度,大于了就显示省略号

ABAP 中内表的复制

关于php的ckeditor编辑文本

在antd的table中内嵌分页按钮

2.grid方法