ASPxGridView动态创建表格列编辑模板

在项目中用到了DevExpress的ASPxGridview控件,每每去配置它的时候,总感觉很是啰嗦,于是想到了用代码自动配置。

于是有了这样的代码:

             foreach (ZiyuWeb.Entity.Sys_UIConfig item in sConfigs)
                {
                    switch (item.ControlName)
                    {
                        case "ASPxDropDown_ASPxCheckListBox":
                            {
                                DevExpress.Web.ASPxGridView.GridViewDataDropDownEditColumn col = new GridViewDataDropDownEditColumn();//创建一个表格列;
                                col.FieldName = item.FieldName;//表格列绑定的数据源字段名称
                                col.Caption = item.FieldDescribe;//字段显示标题
                                col.Name = "col_" + item.FieldName;//列名称
                                col.VisibleIndex = item.OrderByID;//显示顺序
                                col.Width = item.Width;//显示宽度
                                col.Visible = item.UserIsVisible;//是否可见
                                col.ReadOnly = item.UserReadOnly;//是否只读
                               // col.EditItemTemplate = new ZiyuWeb.ASPxCheckListBox_DropDownTemplate("", item.QueryStr, col.Name);//创建该字段的编辑模板,如果是标准的DevExpress.Web.ASPxEditor则无需创建编辑模板了。但若是DropDown或者自己写的控件,就必须自行创建了。
                                mygridview.Columns.Add(col);//添加到View;

                                break;
                            }
                      ……
                    }
                }

  有了上面代码创建的表格,则ASPxGridview控件只需要设置一下配置文件名称和数据源,便可以以一行代码来完美展现了。

           ZiyuWeb.WebFunc.ZiyuDevHelper.configGridView(ASPxGridView1, "Sys_UIConfig", true, null);

 

创建EditItemTemplate。

    class MyTemplate_AspxCheckBoxList : ITemplate
    {
        int _iwidth = 80;
        public int Iwidth
        {
            get { return _iwidth; }
            set { _iwidth = value; }
        }
        ZiyuWeb.Entity.Sys_UIConfig uiconfig;
        public MyTemplate_AspxCheckBoxList(ZiyuWeb.Entity.Sys_UIConfig myuiconfig)
        {
            uiconfig = myuiconfig;
            Iwidth = uiconfig.Width;

        }
        public void InstantiateIn(Control container)
        {
            DevExpress.Web.ASPxEditors.ASPxCheckBoxList alistbox = new ASPxCheckBoxList();
            alistbox.TextField = uiconfig.FieldName;
            alistbox.ValueField = uiconfig.FieldName;
            if (uiconfig.QueryStr != null)
            {
                if (uiconfig.QueryStr.Length > 0)
                {
                    if (uiconfig.QueryStr.IndexOf("select") >= 0)
                    {
                        System.Collections.ArrayList alist = MyHelper4Web.MyStringHelper.getTableNamefromSql(uiconfig.QueryStr);
                        XCode.DataAccessLayer.DAL mydal = XCode.DataAccessLayer.DAL.Create("common");
                        System.Data.DataTable dt = mydal.Select(uiconfig.QueryStr, alist[0].ToString()).Tables[0];
                        if (dt.Columns.Count == 1)
                        {
                            for (int i = 0; i < dt.Rows.Count; i++)
                            {
                                alistbox.Items.Add(dt.Rows[i][0].ToString());
                            }
                        }
                    }
                    else
                    {
                        System.Collections.ArrayList alist =
                        MyHelper4Web.MyConvertHelper.ConvertStringToArrayList(uiconfig.QueryStr, ";");
                        for (int i = 0; i < alist.Count; i++)
                        {
                            alistbox.Items.Add(alist[i].ToString());
                        }
                    }
                }
            }
            alistbox.ID = "myCon_" + uiconfig.FieldName;
            alistbox.ClientInstanceName = "myCon_" + uiconfig.FieldName;
            alistbox.RepeatColumns = 3;
            alistbox.TextWrap = false;
            alistbox.RepeatDirection = RepeatDirection.Horizontal;
            alistbox.RepeatLayout = RepeatLayout.Flow;

            string rowValue = (container as GridViewEditItemTemplateContainer).Text;
            string[] rowValueItems = rowValue.Split(';');
            List<string> rowValueItemsAsList = new List<string>();
            rowValueItemsAsList.AddRange(rowValueItems);
            foreach (ListEditItem item in alistbox.Items)
                if (rowValueItemsAsList.Contains(item.Value.ToString()))
                    item.Selected = true;
            container.Controls.Add(alistbox);
        }
    }

  

转载于:https://www.cnblogs.com/HebiZiyu/p/3468418.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Android GridView中动态添加,可以遵循以下步骤: 1. 定义一个基本的GridView布局文件,包含GridView控件和适配器。 2. 创建一个数据源表,用于存储GridView中要显示的数据。 3. 创建一个自定义适配器,该适配器用于将数据源表中的数据绑定到GridView中的单元格中。 4. 在Activity或Fragment中,实例化GridView控件,并将自定义适配器设置为GridView的适配器。 5. 在需要动态添加的时候,更新数据源表,并调用适配器的notifyDataSetChanged()方法,以便GridView可以重新绘制。 6. 在适配器中,根据数据源表的大小来确定GridView中应该显示的数。可以使用GridView的setNumColumns()方法来设置数。 以下是一个简单的示例代码,演示如何动态添加到GridView中: ```java public class MainActivity extends AppCompatActivity { private GridView gridView; private CustomAdapter customAdapter; private List<String> dataList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gridView = findViewById(R.id.gridview); dataList = new ArrayList<>(); customAdapter = new CustomAdapter(dataList); gridView.setAdapter(customAdapter); // 动态添加一 addColumn(); } private void addColumn() { // 更新数据源表 dataList.add("New Column"); // 计算数 int numColumns = (dataList.size() % 3 == 0) ? dataList.size() / 3 : (dataList.size() / 3) + 1; // 设置数 gridView.setNumColumns(numColumns); // 刷新适配器 customAdapter.notifyDataSetChanged(); } class CustomAdapter extends BaseAdapter { private List<String> dataList; public CustomAdapter(List<String> dataList) { this.dataList = dataList; } @Override public int getCount() { return dataList.size(); } @Override public Object getItem(int position) { return dataList.get(position); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.grid_item, parent, false); } TextView textView = convertView.findViewById(R.id.textview); textView.setText(dataList.get(position)); return convertView; } } } ``` 在上面的示例中,我们在Activity的onCreate()方法中,实例化了一个GridView控件和一个自定义适配器。然后,我们调用了addColumn()方法,该方法会更新数据源表,计算出应该显示的数,并设置到GridView中。最后,我们调用了适配器的notifyDataSetChanged()方法,以便GridView可以重新绘制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值