读书人

各位大侠!帮忙看下这个有关问题(Gri

发布时间: 2013-09-08 15:21:21 作者: rapoo

各位大侠!帮忙看下这个问题(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++)


{
dataview.Columns.RemoveAt(1);//再次查询时删除所有日期列,重新加载日期列,重一开始是为了保存勾选列
}
for (i = 0; i < CurMonthDay; i++)
{
int day;
DateTime tm = new DateTime(year, month, i + 1);
ImageField newcoltp = new ImageField();

switch (tm.DayOfWeek)
{
case DayOfWeek.Sunday:
day = i + 1;
newcoltp.HeaderText = day.ToString() + "\n日";
break;

case DayOfWeek.Monday:
day = i + 1;
newcoltp.HeaderText = day.ToString() + "\n一";
break;

case DayOfWeek.Tuesday:
day = i + 1;


newcoltp.HeaderText = day.ToString() + "\n二";
break;

case DayOfWeek.Wednesday:
day = i + 1;
newcoltp.HeaderText = day.ToString() + "\n三";
break;

case DayOfWeek.Thursday:
day = i + 1;
newcoltp.HeaderText = day.ToString() + "\n四";
break;

case DayOfWeek.Friday:
day = i + 1;
newcoltp.HeaderText = day.ToString() + "\n五";
break;

case DayOfWeek.Saturday:
newcoltp.HeaderText = ((i + 1)).ToString() + "\n六";
break;


}
newcoltp.ItemStyle.Width = 20;
newcoltp.DataImageUrlField = string.Format("DDay{0}", i + 1);
dataview.Columns.Add(newcoltp);
}

}



要求在点击查询按钮时候 根据年,月实现gridview的创建,并使勾选列的勾选控件不丢失,如何实现啊!
各位大侠!!! ASP.Net GridView 模板列
[解决办法]
在那调用的代码贴 出来。
[解决办法]
点击引起页面load,所有元素被重置,如果你是动态创建的,那么就在pageload中,判断ispostback,这样只在第一次创建,其他时候,即使刷新也不会被重置
[解决办法]
第一列不搞模版咧,也放在动态创建里不可以么?
[解决办法]
我感觉LZ要实现这样的功能用此方法绕远了。我会选择使用Repeter再嵌套其它控件(如Repeter或者DataList或GridView)来实现这样的功能。只需要实现表头动态绑定然后在绑定事件时根据表头再绑定详细内容来实现。
[解决办法]
代码 一会回来看。
先加
if(!ispostback)

读书人网 >asp.net

热点推荐