以编程方式遍历DatagridView并选中复选框

时间:2009-03-25 10:39:33

标签: c# windows datagridviewcheckboxcell

我有DataGridView绑定数据表我有相同的复选框。

我想导航或遍历datagridview并勾选这些复选框,下面是我使用的语法。

foreach(DataGridViewRow dr in dgvColumns.Rows)
{
    DataGridViewCheckBoxCell checkCell =
        (DataGridViewCheckBoxCell)dr.Cells["CheckBoxes"];
    checkCell.Value=1;
    //Also tried checkCell.Selected=true;
    //Nothing seems to have worked.!
}

5 个答案:

答案 0 :(得分:11)

以下对我有用,它完美地检查了复选框:)

foreach (DataGridViewRow row in dgvDataGridView.Rows)
{
    ((DataGridViewCheckBoxCell)row.Cells[0]).Value = true;
}

答案 1 :(得分:3)

如果绑定到DataTable,您是否可以不使用模型(表格)? DataGridView是一个视图......

尝试循环遍历表中的行,设置值。例如(下方) - 请注意,我不会更新DataGridView - 只更新DataTable

using System;
using System.Data;
using System.Windows.Forms;

static class Program
{
    [STAThread]
    static void Main()
    {
        DataTable table = new DataTable();
        table.Columns.Add("Name", typeof(string));
        table.Columns.Add("Selected", typeof(bool));
        table.Rows.Add("Fred", false);
        table.Rows.Add("Jo", false);
        table.Rows.Add("Andy", true);

        Button btn = new Button();
        btn.Text = "Select all";
        btn.Dock = DockStyle.Bottom;
        btn.Click += delegate
        {
            foreach (DataRow row in table.Rows)
            {
                row["Selected"] = true;
            }
        };

        DataGridView grid = new DataGridView();
        grid.Dock = DockStyle.Fill;
        grid.DataSource = table;

        Form form = new Form();
        form.Controls.Add(grid);
        form.Controls.Add(btn);
        Application.Run(form);
    }
}

答案 2 :(得分:1)

有些事情:

foreach(DataGridViewRow dgvr in dgvColumns.Rows)
{
    // Get the underlying datarow
    DataRow dr = ((DataRowView)dgvr.DataBoundItem).Row;

    // Update the appropriate column in the data row.
    // Assuming this is your column name in your 
    // underlying data table
    dr["CheckBoxes"] = 1;
}

答案 3 :(得分:1)

选择其值的行不会传递给基础数据源,因此不会保存。数据源是Datatable。它的datagridview问题。

答案 4 :(得分:0)

int getstring(void)
{
  char *x;
  int i = 0;
  x = malloc(sizeof(char) + 1);
  char ch;
  while ((ch = getchar()) != EOF)
  {
     x[i] = getchar();
     x = realloc(x, sizeof(char) + i + 1);
     i++;
  }
  return *x;
} 

这看起来像你所需要的。我对这一切都很陌生,如果我的回答不正确,那就很抱歉。只是想帮忙。