日期:2014-05-19  浏览次数:21001 次

DataGrid 绑定DataTable,高手进来看看
GetZhimaData   gzd   =   new   GetZhimaData();
ArrayList   al   =   gzd.ImportDataFromDB();
DataTable   dt   =   new   DataTable();

dt.Columns.Clear();
dt.TableName   =   "zhima ";

//添加列
dt.Columns.Add( "ID号 ",   typeof(String));
dt.Columns.Add( "期数 ",   typeof(String));
dt.Columns.Add( "结果 ",   typeof(String));
#region   "动态列 "
if(ckbSimpleCondition.CheckedItems.Count   !=0)           //第一次我没有选择,不执行这个。第二次执行.
{
for(int   i=0;i <ckbSimpleCondition.CheckedItems.Count;i++)
{  
dt.Columns.Add(ckbSimpleCondition.CheckedItems[i].ToString(),   typeof(String));  
string   strModeName   =   ckbSimpleCondition.CheckedItems[i].ToString();  
alModeName.Add(strModeName);
//临时做法  
if(i==0)
{
alModeValue.Add(mode0005);  
}  
else   if(i==1)  
{  
alModeValue.Add(mode0621);
}  
else
{
alModeValue.Add(mode2227);
}
}
}
#endregion

#region   开始添加数据
//开始添加数据
#endregion

dataGrid1.DataSource   =   dt;


上面的代码是按钮事件中的source
我用DataTable   绑定到DataGrid上。
第一次不执行代码中的for循环。DataTable中就只有三列。
我第二次选择ckbSimpleCondition中的三项。经过调试。往DataTable中添加数据之后。
DataTable中确实已经新增了三列。并且里面有值。
而dataGrid1.DataSource   =   dt;执行后。并没有发现dataGrid1中列的变化--它还是三列。没变

------解决方案--------------------
AutoGenerateColumns属性设为True 看看