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