DevExpress网格控件(GridView)中增加下拉框和复选框

本文主要介绍如何在GridControl网格中的每一行增加复选框、下拉框和多选下拉框。最终效果如下图所示。

其中,测试模块,模块类型,从属,测试人,测试要求,备注等是数据库查询到的数据。

 操作步骤:

一、添加控件

1. Winform窗口放置一个GridControl,默认有一个GridView

2. GridControl右上角选择Run Densigner,进入Grid Desginer

3.  添加需要加入网格的复选框(CheckEdit)、下拉框(LookUpEdit)和多选框(CheckedComboboxEdit)

4. 将GridView中的列与步骤3中添加的Repository关联起来,如下图所示

 二、代码

1. Winform的Load事件中加入以下代码

private XXX_Load(object sender, EventArgs e)
{
 this.gridView_ChildTaskList.OptionsBehavior.Editable = true;//可编辑
                //this.gridView_ChildTaskList.Columns["task_id"].OptionsColumn.AllowEdit = false;             
                this.gridView_ChildTaskList.Columns["module_name"].OptionsColumn.AllowEdit = false;
                this.gridView_ChildTaskList.Columns["module_type_name"].OptionsColumn.AllowEdit = false;//不可编辑
                this.gridView_ChildTaskList.Columns["module_parent_name"].OptionsColumn.AllowEdit = false;
                this.gridView_ChildTaskList.Columns["requirement"].OptionsColumn.AllowEdit = true;//可编辑
                this.gridView_ChildTaskList.Columns["tester_id"].OptionsColumn.AllowEdit = true;
                //不允许筛选
                this.gridView_ChildTaskList.Columns["check"].OptionsFilter.AllowFilter = false;
                //多选             
                this.gridView_ChildTaskList.Columns["check"].OptionsColumn.AllowEdit = true;
                this.gridView_ChildTaskList.Columns["check"].OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.False;
                this.gridView_ChildTaskList.OptionsSelection.MultiSelect = true;
                this.gridView_ChildTaskList.OptionsSelection.MultiSelectMode = DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect;

                #region 子任务
                //网格绑定数据源
                DataTable dt_childTasks = BLL.TestTask.ChildTask.Init_ChildTasks(task_id);
                this.gridControl.DataSource = dt_childTasks;

                #endregion

                Init_LookUpEdit_Tester();//初始化测试人员下拉框
                Init_ComboxCheck_Requirement();//初始化测试 要求


}

2. 数据源

  /// <summary>
        /// 初始化测试模块表
        /// </summary>
        /// <param name="task_id"></param>
        /// <returns></returns>
        public static DataTable Init_ChildTasks(string task_id)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("check", System.Type.GetType("System.Boolean"));//对应CheckEdit控件
            dt.Columns.Add("child_task_id");
            dt.Columns.Add("is_finished");
            dt.Columns.Add("finished_time");//完成时间
            dt.Columns.Add("task_id");
            dt.Columns.Add("module_id");
            dt.Columns.Add("module_name");
            dt.Columns.Add("tester_id");//对应测试人员下拉框控件LookUpEdit
            dt.Columns.Add("tester_name");
            dt.Columns.Add("requirement");//对应测试要求CheckedComboxEdit控件
            dt.Columns.Add("bz");
            dt.Columns.Add("module_type_id");
            dt.Columns.Add("module_type_name");
            dt.Columns.Add("module_parent_id");
            dt.Columns.Add("module_parent_name");

            //DataTable dt_modules = DAL.TestTask.Task.Que_AllTestModule().Tables[0];
            DataTable dt_modules = BLL.TestTask.TestModule.Que_AllTestModule().Tables[0];
            if (dt_modules != null && dt_modules.Rows.Count > 0)
            {
                for (int i = 0; i < dt_modules.Rows.Count; i++)
                {
                    string module_id = dt_modules.Rows[i]["module_id"].ToString();
                    DataRow dr = dt.NewRow();
                    dr["check"] = "False";
                    dr["child_task_id"] = "";
                    dr["is_finished"] = "否";
                    dr["finished_time"] = "";
                    dr["task_id"] = task_id;
                    dr["module_id"] = dt_modules.Rows[i]["module_id"].ToString();
                    dr["module_name"] = dt_modules.Rows[i]["module_name"].ToString();
                    dr["tester_id"] = "";
                    dr["tester_name"] = "";
                    dr["requirement"] = "P1,P2,P3,P4";
                    dr["bz"] = "";
                    dr["module_type_id"] = dt_modules.Rows[i]["module_type_id"].ToString();
                    dr["module_type_name"] = dt_modules.Rows[i]["module_type_name"].ToString();
                    dr["module_parent_id"] = dt_modules.Rows[i]["module_parent_id"].ToString();
                    dr["module_parent_name"] = dt_modules.Rows[i]["module_parent_name"].ToString();

                    dt.Rows.Add(dr);
                }
            }

            return dt;
        }

3. Load事件调用方法:初始化测试人员下拉框 Init_LookUpEdit_Tester() 和初始化测试要求 Init_ComboxCheck_Requirement()

  /// <summary>
        /// 初始化测试人员下拉框
        /// </summary>
        private void Init_LookUpEdit_Tester()
        {
            //DataSet ds = new DataSet();
            //DataTable dt_users = new DataTable();

            //dt_users.Columns.Add("user_id");
            //dt_users.Columns.Add("user_name");        

            //DataRow dr = dt_users.NewRow();
            //dr["user_id"] = "--请选择--";
            //dr["user_name"] = "--请选择--";    
            //dt_users.Rows.Add(dr);

            //ds.Tables.Add(dt_users);
            DataTable dt = BLL.MaintenanceSystem.UserInfo.Que_AllUserInfo().Tables[0];
           // ds.Tables[0].Merge(dt);

            this.repositoryItemLookUpEdit1.DataSource = dt;
            this.repositoryItemLookUpEdit1.ValueMember = "user_id";
            this.repositoryItemLookUpEdit1.DisplayMember = "user_name";
            this.repositoryItemLookUpEdit1.ShowHeader = true;
            this.repositoryItemLookUpEdit1.ShowFooter = false;
            this.repositoryItemLookUpEdit1.NullText = "无";

            this.repositoryItemLookUpEdit1.Columns.Clear();
            this.repositoryItemLookUpEdit1.DropDownRows = dt.Rows.Count;

            this.repositoryItemLookUpEdit1.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("user_name", ""));

            //不允许排序
            this.repositoryItemLookUpEdit1.Columns[0].AllowSort = DevExpress.Utils.DefaultBoolean.False;

            for (int i = 0; i < this.gridView_ChildTaskList.RowCount; i++)
            {
                DataRow row = this.gridView_ChildTaskList.GetDataRow(i);
                this.gridControl.RepositoryItems.Add(this.repositoryItemLookUpEdit1);
                this.gridControl.RepositoryItems.Add(this.repositoryItemCheckEdit_Choose);

            }
        }

        /// <summary>
        /// 初始化测试需求下拉框
        /// </summary>
        private void Init_ComboxCheck_Requirement()
        {
            DataTable dt = BLL.TestTask.TestRequirement.Que_AllTestRequirement();
            this.repositoryItemCheckedComboBoxEdit1.DataSource = dt;
            this.repositoryItemCheckedComboBoxEdit1.ValueMember = "name";
            this.repositoryItemCheckedComboBoxEdit1.DisplayMember = "name";

            //this.repositoryItemCheckedComboBoxEdit1.ShowHeader = true;
            //this.repositoryItemCheckedComboBoxEdit1.ShowFooter = false;
            this.repositoryItemCheckedComboBoxEdit1.NullText = "无";

            this.repositoryItemCheckedComboBoxEdit1.Items.Clear();
            this.repositoryItemCheckedComboBoxEdit1.DropDownRows = dt.Rows.Count;
            

            this.repositoryItemCheckedComboBoxEdit1.Items.Add(new DevExpress.XtraEditors.Controls.ComboBoxItem("name"));


            for (int i = 0; i < this.gridView_ChildTaskList.RowCount; i++)
            {
                DataRow row = this.gridView_ChildTaskList.GetDataRow(i);
                this.gridControl.RepositoryItems.Add(this.repositoryItemCheckedComboBoxEdit1);

            }


        }

以上,启动运行Winform就可以实现最开始那张图的效果。

猜你喜欢

转载自blog.csdn.net/Nancy50/article/details/82842199