将包含文本值“true”文本的 datagridview 单元格类型更改为复选框

Posted

技术标签:

【中文标题】将包含文本值“true”文本的 datagridview 单元格类型更改为复选框【英文标题】:change datagridview cell type containing text vaue "true" text to checkbox 【发布时间】:2014-10-13 11:32:56 【问题描述】:

我有一个 datagridview,它的单元格的文本值为一列的“True”,下一列应该有一个 Combobox,其中有两个值可供选择(输入和输出)...我想更改单元格类型成为 Combobox 的复选框和单元格类型...如果单元格文本为“true”,则必须选中复选框,如果它为 false 或其中没有任何内容,则必须取消选中方向列中的文本Combobox 值必须设置为 IN 并在其中有一个额外的选项 out ...此 DATA 来自加载的 XML 文件,这就是我将 XML 文件加载到 datagridview 的方式

public void Load(DataGridView dgv)
             
    dgv.Refresh();
    XmlReaderxmlFile = XmlReader.Create(@"path/DGVXML.xml",newXmlReaderSettings());
    DataSet dataSet = new DataSet();
    dataSet.ReadXml(xmlFile);
    dgv.DataSource = dataSet.Tables[0];
    xmlFile.Close();              
 

datagridview 必须显示如下

【问题讨论】:

使用OnRowDataBound获取单元格值并插入CheckBox 【参考方案1】:

这就是 iv 添加到 load 方法并 100% 工作的内容

  dgv.Refresh();
                XmlReader xmlFile = XmlReader.Create(@"/DGVXML.xml", new XmlReaderSettings());
                DataSet dataSet = new DataSet();
                dataSet.ReadXml(xmlFile);

                DataGridView grid = new DataGridView();
                var nameColumn = new DataGridViewTextBoxColumn();
                nameColumn.Name = "Device Name";
                nameColumn.HeaderText = "Device Name";
                dgv.Columns.Add(nameColumn);


                var checkColumn = new DataGridViewCheckBoxColumn();
                checkColumn.Name = "Select";
                checkColumn.HeaderText = "Select";
                dgv.Columns.Add(checkColumn);

                string IN = "IN";
                string OUT = "OUT";
                var select = new DataGridViewComboBoxColumn();
                select.HeaderText = "Direction";
                select.Name = "Direction";
                select.Items.Add(IN);
                select.Items.Add(OUT);
                dgv.Columns.Add(select);

                foreach (DataRow row in dataSet.Tables[0].Rows)
                
                    string DeviceName = row[0].ToString();

                     bool Enabled = false;
                    if (row[1].ToString() != "")
                        Enabled = Convert.ToBoolean( row[1].ToString());

                    string Direction = row[2].ToString();

                    DataGridViewRow dgRow = new DataGridViewRow();
                    dgv.Rows.Add(new object[] DeviceName, Enabled, Direction);
                

【讨论】:

以上是关于将包含文本值“true”文本的 datagridview 单元格类型更改为复选框的主要内容,如果未能解决你的问题,请参考以下文章

如何将 true 或 false 的值更改为文本值类型 我正在检查整个表中的行 注意该表是数据表类型?

每个如果类包含文本的jQuery remove()

剑道网格字段值需要与显示的文本不同

如何将包含各种值的消息放在C#的单独文本框中

如何检查一个文件的值是不是包含在另一个文本文件中? (perl 脚本)

SQL检查文本是否包含单词