【问题标题】:I need to copy all selected datagridview row to another datagridview when checkboxcolumn is checked选中 checkboxcolumn 时,我需要将所有选定的 datagridview 行复制到另一个 datagridview
【发布时间】:2019-09-18 03:09:28
【问题描述】:

当复选框列被选中时,我试图将 datagridview 行复制到另一个 datagridview。选择子节点时,我正在从树视图加载 datagridview1。但是,当我选择另一个子节点时,之前的复选框消失了

 private void BtnAdd_Click(object sender, EventArgs e)
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Product Name");
        dt.Columns.Add("Qty");
        dt.Columns.Add("Unit Price");

        foreach (DataGridViewRow row in dgvSelect1.Rows)
        {
           bool isSelected = Convert.ToBoolean(row.Cells["checkBoxColumn"].Value);
            if (isSelected)
                {
               dt.Rows.Add(row.Cells[2].Value);
                }
                dgvSelect2.DataSource = dt;

【问题讨论】:

    标签: c# datagridviewcolumn datagridviewcheckboxcell


    【解决方案1】:

    这是你的代码 sn-p

    在你的主课中:

    private DataTable dt;
    

    在主类的构造函数中:

    dt = new DataTable();
    dt.Columns.Add("Product Name");
    dt.Columns.Add("Qty");
    dt.Columns.Add("UnitPrice");
    dgvSelect2.DataSource = dt;
    

    dt 设置为DataSourceDataGrid 会将DataTable 的内容链接到DataGrid,因此您只需执行一次。

    在按钮点击中:

    dt.Clear();
    foreach(var row in dgvSelect1.Rows)
    {   
       if ((row.Collumns["checkBoxColumn"].Content as CheckBox).IsChecked)
       {
          var newRow = dt.NewRow();
          newRow["Product Name"] = row["Product Name"];
          /*yadayada*/
          dt.Rows.Add(newRow);
       }
    }
    

    让数据网格创建新行,以便定义列,以便您只需单独填充它们,然后将其添加到 DataTable,然后同步到 DataGrid

    【讨论】:

    • 以这种方式运行它会出错。 'object' 不包含'Cells' 的定义,并且无法使用 [] 将索引应用于 'object' 类型的表达式。错误出现在 (row.Cells) 和 row["Product Name"]
    猜你喜欢
    • 2011-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    相关资源
    最近更新 更多