日期:2014-05-18  浏览次数:20476 次

关于GridView半自动绑定问题!
HTML code

关闭了自动生成列(AutoGenerateColumns="False")
<asp:GridView ID="grid_info" runat="server" AutoGenerateColumns="False"  >
  <Columns>
   <asp:TemplateField > 
    <ItemTemplate > 
     <a><%# Eval("ID")%></a> 
    </ItemTemplate>
   </asp:TemplateField>
  </Columns>
</asp:GridView> 


C# code

//后台代码绑定GridView的方法
 public void IntiGrid(DataTable dsGrid)
    {
        //由于前台有一个模板绑定了ID这个字段所以这里再次绑定前需要把除了第一列以外的列清楚
        if (grid_info.Columns.Count > 1)
        { 
            grid_info.Columns.RemoveAt(1);
        }

        //这里通过后台业务获取到一个数据集合
        DataTable dsGrid = GerData();
        //采用循环的方式绑定GridView
        foreach (DataColumn dc in dsGrid.Columns)
        {
            //由于前台有一个模板绑定了ID这个字段所以这里需要过滤掉不绑定
            if (dc.ColumnName != "ID")
            {
                BoundField bfCase = new BoundField();
                bfCase.DataField = dc.ColumnName;
                bfCase.HeaderText = dc.ColumnName;
                grid_info.Columns.Add(bfCase);
            }
        }

    }
 
//现在出现的问题是我页面上有一个按钮触发数据绑定的这个方法,第一绑定数据到GridView没问题!
//但是在点一次后就会出现第一列没有绑定数据的情况



------解决方案--------------------
是否要做个判断dsGrid.Columns的数据是否为NULL呢?
------解决方案--------------------
要在你点击按钮的事件里面写如下代码就好了:
DataTable dsGrid = new DataTable();
GridView gv = new GridView();
this.grid_info = gv;
IntiGrid(dsGrid);