2011-02-05 108 views

回答

21

自己为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; 
0

我们可以使用所需的列创建一个新的DataTable,并从数据集添加行。然后我们可以用新创建的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; 
16

添加列上面的回答,并且不要忘记设置:

dataGridView1.AutoGenerateColumns=false; 
+1

奇妙的提醒。谢谢。保存了我的一天。 – user1298925 2014-12-03 15:39:01

1

这是前一阵子问,所以你可能不会需要这个答案...希望其他人会发现它很有用。

我不得不做类似的事情,我发现最简单的解决方案是创建表的临时副本(在其中存储数据),然后简单地删除有问题的列。例如:

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

我认为这应该是个诀窍!

干杯!

0
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]; 
    } 

肯定会起作用。

0

将DataTable绑定到DataGridView之后,隐藏不需要的列。

dataGridView1.DataSource = datatable; 
dataGridView1.Columns["ColumnName"].Visible = false; 
相关问题