在Bound按钮中为GridView动态添加BoundField与TemplateField
BoundField bf = new BoundField();
bf.DataField = "moviename";
bf.HeaderText = "名称";
GridView1.Columns.Add(bf);
BoundField bf1 = new BoundField();
bf1.DataField = "imageurl";
bf1.HeaderText = "图片路径";
GridView1.Columns.Add(bf1); TemplateField tf = new TemplateField();
tf.HeaderText = "选择";
tf.ItemTemplate = new tm(DataControlRowType.DataRow, "", "CbSelect");
//GridView1.Columns.Insert(0,tf);
GridView1.Columns.Add(tf);但当在点击别一个按钮(Refreash)回传时,只有BoundField的字段会保存住,而TemplateField的消失!
这是什么原因呢?
难到说只有BoundField 的字段会被ViewState保存,而TemplateField不会吗?
如果是这样怎么让TemplateField的也会被缓存到ViewState中呢?是重写LoadViewState方法和SaveViewState方法吗?
BoundField bf = new BoundField();
bf.DataField = "moviename";
bf.HeaderText = "名称";
GridView1.Columns.Add(bf);
BoundField bf1 = new BoundField();
bf1.DataField = "imageurl";
bf1.HeaderText = "图片路径";
GridView1.Columns.Add(bf1); TemplateField tf = new TemplateField();
tf.HeaderText = "选择";
tf.ItemTemplate = new tm(DataControlRowType.DataRow, "", "CbSelect");
//GridView1.Columns.Insert(0,tf);
GridView1.Columns.Add(tf);但当在点击别一个按钮(Refreash)回传时,只有BoundField的字段会保存住,而TemplateField的消失!
这是什么原因呢?
难到说只有BoundField 的字段会被ViewState保存,而TemplateField不会吗?
如果是这样怎么让TemplateField的也会被缓存到ViewState中呢?是重写LoadViewState方法和SaveViewState方法吗?
解决方案 »
- 报表部署到iis上不能显示的问题
- asp.net读取剪贴板内容显示问题
- Asp.net发邮件验证用户注册,当内容是纯文字时就能发出去,可加上个链接就收不到了,郁闷啊!!
- asp.net编译
- 点击一个按钮生成一个上传文件的控件,继续点击,还可以生成。
- 为什么提示“上下文中不可用”?
- 调用WebService时,基础连接已经关闭: 无法解析此远程名称
- 左边是一颗导航树 treeview,想在打开一个连接时,达到如下效果,即页面全屏显示,
- 有没有在南京的.net高手?
- 页面嵌入Flash为何不支持网盘上的链接???急
- MVC2 中的问题,怎么将字符串当变量用?
- FCKLang is undefined:用fck控件的页面加载时报脚本错误FCKLang is undefined 请高手指教。
ITemplate动态添加模版列
http://topic.csdn.net/u/20091210/17/24fcd4e6-d8db-4d6b-88de-b3dcf098d75a.html?57895
(人生如梦)
谢谢你的回复!~我这里的确是做的动态添加模块列~
GridView里面一开始我直接加了一个TemplateField的字段主要是checkbox进行选择,然后,我通过两个按钮,分别绑定不同的datatable和不同字段. 在两个按钮中我没用GridView1.Columns.Clear()方法,而且用了一个这样的方法
private void remove()
{
List<DataControlField> list = new List<DataControlField>();
foreach (DataControlField df in GridView1.Columns)
{
if (df.GetType()==typeof(BoundField))
{
list.Add(df);
}
}
for (int i = 0; i < list.Count; i++)
{
GridView1.Columns.Remove(list[i]);
}
}
先移出字段,然后在绑定字段.
BoundField bf = new BoundField();
bf.DataField = "typeid";
bf.HeaderText = "类型ID";
GridView1.Columns.Add(bf);
BoundField bf1 = new BoundField();
bf1.DataField = "id";
bf1.HeaderText = "编号";
GridView1.Columns.Add(bf1); DataTable dt = DAL.ODBC_DBhelper.GetTab("select * from movie", null);
databinds(dt);
一开始点击按钮都正常,但多点几次之后,添加的TemplateField中的ItemTemplate就会消失!!
是不是说ViewState对同一个TemplateField中的ItemTemplate属性,保存时间有限?
TemplateField tf = new TemplateField();
tf.HeaderText = "选择";
tf.ItemTemplate = new tm(DataControlRowType.DataRow, "", "CbSelect");
//GridView1.Columns.Insert(0,tf);
GridView1.Columns.Add(tf);
这段代码放到Page_Init(object sender,EventArgs e)
里面去,这样一来,每次GridView在初始化的时候都可以先动态加载(其实我个人觉得就和加一个静态的模版列差不多)
但是出现的情况也一样!~tf.ItemTemplate = new tm(DataControlRowType.DataRow, "", "CbSelect");
中的 tf.ItemTemplate 中的内容运行几次以后就空了~~
很头痛这个问题