日期:2014-05-17  浏览次数:20452 次

gridview动态设定列宽问题,高分求教.
以下程序试图动态生成gridview列,并设定每列的列宽.
  protected readonly string[] TaskGridView1_ColNames = {"任务编号","任务名称","巡视时间","用户组" };
  protected readonly int[] TaskGridView1_ColWidths = {100,250,100,100};
  protected void TaskGridView1_ShowHeader()
  {
  DataTable dt = new DataTable();
  DataColumn dc = null;
  for (int i = 0; i < TaskGridView1_ColNames.Length; i++)
  {
  dc = new DataColumn(TaskGridView1_ColNames[i], typeof(string));
  dt.Columns.Add(dc);
  }
  dt.Rows.Add(dt.NewRow());
  TaskGridView1.DataSource = dt;
  TaskGridView1.DataBind();
  TaskGridView1.Rows[0].Visible = false;
  for (int i = 0; i < TaskGridView1.Columns.Count; i++)
  {
  TaskGridView1.Columns[i].HeaderStyle.Width = TaskGridView1_ColWidths[i];
  }
  }
在对列宽进行调整的代码for (int i = 0; i < TaskGridView1.Columns.Count; i++){...}里,TaskGridView1.Columns.Count为0,所以无法进入循环对列宽进行赋值,但在IE中,能正确显示各列的名称.
请问以上代码错在何处,或提供一个能动态生成GridView列,且设置列宽的其它方法,谢谢.

------解决方案--------------------
3楼
这样写,才是取头的列数
TaskGridView1.HeaderRow.Cells.Count.ToString()