2011-12-05 41 views
0

所以...我试图找到一个控件的客户端ID(一个隐藏的输入字段),它是一个用户控件的一部分,它是动态绑定到网格视图'项目模板'。 我正试图在“RowDataBound”事件中执行以下操作,但似乎无效。在gridview中的用户控件中找到控件的客户端ID

protected void grid_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
     if (ShowSelectColumn) 
     { 

      HiddenField MfrHiddenField = (e.Row.Cells[2].FindControl("MfrNumHiddenfield")) as HiddenField; 
} 

其中“MfrNumHiddenfield”是隐藏输入字段的ID。 e.row.cells [2]是其中“用户控制”被结合到柱上的细胞数......

下面

是用户控制如何被加入到GridView:

grid.Columns.Add(CreateTemplateField(
      path + "ManufacturerHeader.ascx", 
      path + "ManufacturerCell.ascx")); 

我想要做什么有什么不对?请帮忙

+0

你想要找到一个控件的ID或者你想从ID中获得控件吗?因为你好像已经知道ID了? – c0deNinja

+0

我需要知道我在做什么的控件的“客户端ID”。因为它被封装在“masterpage-Gridview-column-usercontrol”中,所以使用控件的ID来找到控件变得越来越困难。我试图在绑定时使用“FindControl”方法在绑定列内部找到控件。 – karry

+0

从哪里试图获得这个值?母版页或页面? – TheGeekYouNeed

回答

1

你通常不需要看单元格。 e.Row.FindControl("MfrNumHiddenfield")应该就够了。

既然你正在寻找一个自定义的控制的控制,你可以尝试:

e.Row.FindControl("manufacturerCellControl").FindControl("MfrNumHiddenfield") 

我从来没有尝试过,但它似乎也合情合理。

更好的选择是从ManufacturerCell控件中公开属性以进行所需的更改。这将使控制的客户不需要理解内部运作。只需创建一个属性,并将代码写入getset方法。

+0

试过这样做..它没有这样工作 – karry

+0

'HiddenField'是在'制造商...'控制之内吗? – drdwilcox

+0

yes ...它在ManufacturerCell.ascx控制中 – karry

相关问题