asp.net – 动态列在回发后消失
发布时间:2020-05-24 10:28:20 所属栏目:asp.Net 来源:互联网
导读:我有一个带有一些BoundFields和两个TemplateFields的GridView.在这两个TemplateFields中,我动态创建包含DropDownList和TextBox的UserControls,用户可以修改它们. 当我尝试在PostBack之后获取控件的值时,BoundFields中的值仍然存在,但我的动态控件消失了.我可
|
我有一个带有一些BoundFields和两个TemplateFields的GridView.在这两个TemplateFields中,我动态创建包含DropDownList和TextBox的UserControls,用户可以修改它们. 当我尝试在PostBack之后获取控件的值时,BoundFields中的值仍然存在,但我的动态控件消失了.我可以再次创建它们但它不会获得用户的值…如何在丢失之前获取这些值? 这是我的一些代码: 在RowDataBound事件中: Select Case type
Case "BooleanBis"
e.Row.Cells(2).Controls.Clear()
Dim list1 As BooleanBisList = New BooleanBisList(avant,False)
e.Row.Cells(2).Controls.Add(list1)
e.Row.Cells(4).Controls.Clear()
Dim list2 As BooleanBisList = New BooleanBisList(apres,True)
e.Row.Cells(4).Controls.Add(list2)
Case "Boolean"
e.Row.Cells(2).Controls.Clear()
Dim list3 As BooleanList = New BooleanList(avant,False)
e.Row.Cells(2).Controls.Add(list3)
e.Row.Cells(4).Controls.Clear()
Dim list4 As BooleanList = New BooleanList(apres,True)
e.Row.Cells(4).Controls.Add(list4)
End Select
在我的按钮单击事件中,我尝试获取用户控件: Case "String"
temp.ChampValeurApres = DirectCast(Tableau1.Rows(i).Cells(selectedColumn).Controls(1),TextBox).Text
但我得到它不存在的错误. 解决方法您应该在 RowCreated而不是 RowDataBound中创建动态控件,因为此事件会在每次回发时触发,而RowDataBound仅在GridView获取数据绑定到其DataSource时触发.必须在每个回发上重新创建动态创建的控件,并使用与之前相同的ID,然后将它们保留在ViewState中,并且事件将正确触发(例如,DropDownList的SelectedIndexChanged事件). 所以你应该在RowCreated中创建它们并在RowDataBound中“填充”它们(例如,DropDownList数据源/ Items或TextBox-Text). (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- asp.net-core – TagHelper,用于将路由值作为链接
- asp.net – 检查该电子邮件地址是否适用于System
- asp.net-mvc – ASP.Net MVC – 处理不好的URL参
- asp.net-mvc – 具有html帮助的布尔隐藏和隐藏
- asp.net-mvc – 如何在.NET MVC3 HTML表单中的必
- asp.net-web-api – mvc webapi cross domain po
- 单元测试 – 单元测试项目不能参考MVC项目
- asp.net-mvc – MVC 4从基本路由中删除“home”
- asp.net-mvc – 使用ASP.NET MVC进行消防和遗忘
- asp.net – 问题映射HttpHandler – HTTP错误404
热点阅读
