ASP.NET 访问 DataList 控件内的 Web 控件
Posted
技术标签:
【中文标题】ASP.NET 访问 DataList 控件内的 Web 控件【英文标题】:ASP.NET Accessing web control inside DataList control 【发布时间】:2011-04-07 07:04:44 【问题描述】:不知道为什么我无法访问 Panel 内部的 Label 控件,而 Panel 位于 DataList 内部
但是当我尝试在 Page_Load 中使用“lbl”时,它似乎找不到控件?你能帮帮我吗?
ItemDataBound 和 Page_Load 事件 --------------------------------- 面板 p = DataList2.FindControl("panelPostDetails") 作为面板; 标签 l = p.FindControl("lblMorePictures") 作为标签; l.文本=代码;该代码返回对象引用未设置为对象的实例。
提前致谢
更新:
ItemDataBound 和 Page_Load 事件 --------------------------------- 面板 p = DataList2.FindControl("panelPostDetails") 作为面板; 如果(p==null) System.Diagnostic.Debug.WriteLine("面板不存在"); 别的 System.Diagnostic.Debug.WriteLine("面板确实存在"); 输出: 面板不存在到底发生了什么!?!
【问题讨论】:
panelPostDetails 是否存在?是 ItemTemplate 中的面板元素吗? 张贴标记 - 你可能错过了一些明显的东西。 @loviji - 是的,panelPostDetails 存在并且它在 ItemTemplate 中。 【参考方案1】:通常,您可以在运行时通过处理 DataList 的 ItemCreated 或 ItemDataBound 事件来访问此类控件。这是一个示例事件处理程序:
protected void DataList2_ItemDataBound(object sender, DataListItemEventArgs e)
if (e.Item.ItemType == ListItemType.Item)
Label lbl = (Label)e.Item.FindControl("panelPostDetails").FindControl("lblMorePictures");
lbl.Text = code;
像这样连接你的事件处理程序:
<asp:DataList ID="DataList2" runat="server" OnItemDataBound="DataList2_ItemDataBound" ...
【讨论】:
Label在Panel里面,Panel在DataList的ItemTemplate里面。 对不起,彼得,但仍然无法正常工作。我又更新了代码。 您还在尝试在 Page_Load() 中执行此操作吗?如果是这样,那就行不通了。您需要在 DataLists 的 ItemDataBound 事件中执行此操作。 抱歉,我刚刚查看了我的代码示例并意识到它有一个错误。我已经更新了它。在 ItemDataBound 事件处理程序中,您需要使用 e.Item.FindControl() 而不是 DataList2.FindControl。【参考方案2】:@Peter 的代码必须有效。
你也可以试试这个:
protected void DataList2_ItemDataBound(object sender, DataListItemEventArgs e)
string st= (e.Item.FindControl("lblMorePictures") as Label).Text;
并将断点设置为st
。就我而言,我收到lblMorePictures
的文本。
【讨论】:
【参考方案3】:在我的表单视图中,我需要将CType
添加到FindControl
。我了解DataList
不一定需要Ctype
,但是小组可能需要此前缀。在这种情况下,frmDelView
是我的表单视图的名称。就我而言,下面的代码行在我的表单中的PreRender
中。这是创建表单时唯一的地方,它将返回我需要传递给向导步骤页面下一页上的标签的数据。很长的故事。
注意:我的代码是 vb 而不是 C#。它应该几乎或完全相同。
CType(frmDelView.FindControl("txtcboDAcct"), TextBox).Text
【讨论】:
以上是关于ASP.NET 访问 DataList 控件内的 Web 控件的主要内容,如果未能解决你的问题,请参考以下文章