2009-05-18 133 views
2

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

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

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

+0

你可以发布你用来实例化控件的代码吗? – Lazarus 2009-05-18 19:59:08

回答

2

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

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

0

您需要创建的AddHandler:

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

,那么你需要如下创建子:

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

'Insert Code here 

End sub 

那么这样做是它创建了一个事件,并宣布一个地址去为那个事件。您应该能够在此事件中编写任何代码。