动态添加页脚到ASP.NET GridView

时间:2009-05-18 19:51:06

标签: c# asp.net gridview footer

我正在尝试将一系列DropDownLists添加到我的GridView控件中。问题是我不知道在设计时我的DataSource中有多少列,因此我尝试使用AutoGenerateColumns = true而不指定列模板。因此,我将DropDownList控件添加到页脚的方式是在GridView的DataBound事件上动态编写代码。

除了我想在用户单击按钮时对每个DropDownLists的SelectedItem执行某些操作时,此工作正常。这些动态添加的控件似乎不再存在于用户点击按钮的帖子后面,我相信问题是因为我没有在DropDownList控件上指定runat =“server”标签。

我是否有不同的方法将这些下拉列表添加到FooterTemplate而不指定所有列,以便当用户单击页面上的按钮时我可以访问其SelectedItems?

2 个答案:

答案 0 :(得分:2)

你部分正确 - 在回发后不再存在动态添加的控件。在运行DataBound事件之前,它们不会重新添加。问题是数据绑定事件在控制事件之后发生,即 按钮的Click事件之后。因此,在处理click事件的页面生命周期中,尚未重新创建那些控件。

Here's a related question which might have some useful information

答案 1 :(得分:0)

您需要创建一个Addhandler:

dim dropdownlistname as new Dropdownlist
Addhandler dropdownlistname.selected_indexchanged,AddressOf dropdownlistname_SelectedIndexChanged

然后你需要创建一个sub,如下所示:

Protected Sub dropdownlistname_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles ddldept.SelectedIndexChanged

'Insert Code here

End sub

这样做是因为它创建了一个Event并声明了一个Address来代表该事件。您应该能够在此事件中编写任何代码。