2011-01-19 28 views
0

我有几个动态创建并放置到PlaceHolder中的GridViews。当我将鼠标移动到Select按钮上时,它显示__doPostBack('ctl00$bodyPlaceHolder$ctl0X','Select$Y'),其中X =我认为是页面的GridView/Control索引,Y = GridView的行号。
由于它是动态创建GridViews,所以将它们命名为ctl0X是有道理的,但在回发中我该如何使用这些信息?
如果加入SelectedIndexChanged EventHandler,我甚至不会遇到这个问题,但它永远不会被调用。
我发现了另一个这样的问题,但答案包括在我的GridView中添加一个GridView,这也必须是动态的,这使我回到了原来的问题。




编辑
好了,所以我设置gridViewDynamic.ID = "blahblah" + r.LastName,从而使每个GridView的一个独特的名字,所以鼠标悬停在页面上我得到__doPostBack('ctl00$bodyPlaceHolder$blahblahSmith',Select$Y,我仍然无法访问在回发的项目,因为他们不再存在。因此,我将相同的GridView创建代码添加到if(IsPostBack),然后调用GridView gView = (GridView)this.Page.FindControl(blahblahSmith)。太棒了,gView不为空。但是行中的所有数据都是。调用gView.Rows[0]返回null。动态GridViews PostbackUrl不是我认为他们应该是

回答

1

使用Page.FindControl(“TheNameYouGaveTheDynamicGridView”)

GridView grid = Page.FindControl("TheNameYouGaveTheDynamicGridView") as GridView; 

如果您正在使用MasterPages,你需要采取不同的方法来找到页面上的控制,但它是相同的前提。

+0

这有点帮助,请参阅上面的编辑。 – Marcus 2011-01-19 23:21:31

相关问题