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

各位大侠!帮忙看下这个问题(GridView动态添加列,刷新(回发),模板列的控件丢失)
在CSDN看到这样一篇:http://bbs.csdn.net/topics/320247030

介绍在OnInit中动态添加列,模板列的控件不会丢失
protected override void OnInit(EventArgs e)
{
  base.OnInit(e);
}

但是我的需求是要根据页面控件的值动态创建GridView。可是在OnInit中无法获取页面控件的值
如:
一个gridview初始有固定的模板列用来勾选

 <asp:GridView ID="gridView" runat="server" AutoGenerateColumns="False" ShowHeader="True"
        Width="100%">
        <Columns>
            <asp:TemplateField>
                <HeaderTemplate>
                    <input type='checkbox' id='chkAllSelect' name='chkAllSelect' onclick="CheckAll(this)"
                        runat="server" />
                </HeaderTemplate>
                <ItemTemplate>
                    <input type="checkbox" id="chkSelect" name="chkSelect" runat="server" value='<%# Eval("Did")%> ' />
                </ItemTemplate>
                <ItemStyle Width="20px" />
            </asp:TemplateField>
        </Columns>
    </asp:GridView>

根据年月再生成其他日期列

//创建列的方法
public void CreateGridView(GridView dataview, int year, int month)
        {
            int i;
            int CurMonthDay = DateTime.DaysInMonth(year, month);
            int count = dataview.Columns.Count;
            for (i = 1; i < count; i++)