如何将数据表的特定列绑定到DataGridView?

时间:2011-02-05 14:40:33

标签: datagridview datatable binding

我的DataTable有三个从数据库中提取的列,而我只需要将它的两列绑定到DataGridView。你能帮帮我吗?

7 个答案:

答案 0 :(得分:24)

自己创建DataGridView的列。尝试这样的事情。

DataGridView dataGridView1 = new DataGridView();
BindingSource bindingSource1 = new BindingSource();

dataGridView1.ColumnCount = 2;

dataGridView1.Columns[0].Name = "Field1";
dataGridView1.Columns[0].DataPropertyName = "Field1";
dataGridView1.Columns[1].Name = "Field2";
dataGridView1.Columns[1].DataPropertyName = "Field2";

bindingSource1.DataSource = GetDataTable();
dataGridView1.DataSource = bindingSource1;

答案 1 :(得分:17)

按上述答案添加列,不要忘记设置:

dataGridView1.AutoGenerateColumns=false;

答案 2 :(得分:1)

这是前一段时间的问题,所以你可能不需要这个答案......希望其他人会觉得它很有用。

我必须做类似的事情,我发现最简单的解决方案是创建表的临时副本(存储数据),然后简单地删除相关列。例如:

DataTable temp = YourDataTable;
temp.Columns.Remove(temp.Columns[2]) // Will remove the third column for example
YourDataTable.DataSource = temp;
YourDataTable.DataBind();

我认为这应该成功!

干杯!

答案 3 :(得分:1)

private void Form1_Load(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("connection string");
        SqlDataAdapter adp = new SqlDataAdapter("select  Fieldname1,fieldname2 from Table Name", con);
        DataSet ds = new DataSet();
        ds.Clear();
        adp.Fill(ds);
        if (ds.Tables[0].Rows.Count > 0)
        {
            dataGridView1.DataSource = ds.Tables[0];
  }

肯定会起作用。

答案 4 :(得分:0)

我们可以使用所需的列创建一个新的DataTable,并从数据集中向其添加行。然后我们可以使用Newly Created DataTable初始化DataGrid。

dt = new DataTable();          
dt_Property.Columns.Add("Field1");
dt_Property.Columns.Add("Field2");
int i = 0;
DataRow row = null;
foreach (DataRow r in ds.Tables[0].Rows)
{               
    row = dt.NewRow();                    
    row["Field1"] = ds.Tables[0].Rows[i][1];
    row["Field2"] = ds.Tables[0].Rows[i][2];
    dt_Property.Rows.Add(row);   
    i = i + 1;
}

dataGridView1.DataSource = dt;

答案 5 :(得分:0)

将DataTable绑定到DataGridView之后隐藏您不想要的列。

dataGridView1.DataSource = datatable;
dataGridView1.Columns["ColumnName"].Visible = false;

答案 6 :(得分:0)

这可能有用

DataSet ds = new DataSet(); <-- Get data from Database here
DataTable dt = ds.Tables[0];
DataView view = new DataView(dt);
DataTable resultTable = view.ToTable(false, "Column1", 
"Column2","Column3","Column4","Column5","Column6");
dataGridView.DataSource = resultTable ;