首页 新闻 搜索 专区 学院

Datalist里面如何获取DataListItem的子控件的值

0
悬赏园豆:20 [已关闭问题]

我的页面里面有一个DataList,DataList里面的ItemTemplate是从其他地方加载进来的,代码如下:

 DataList dlMenu = (DataList)e.Item.FindControl("rep_menu");

 dlMenu.ItemTemplate = Page.LoadTemplate("~/Admin/UserControls/NewDayMenu.ascx");

而NewDayMenu.ascx 里面的代码是这样的:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="NewDayMenu.ascx.cs" Inherits="Admin_UserControls_NewDayMenu" %>

 <asp:CheckBox ID="CheckBox1" runat="server" Text='<%# Eval("MenuName") %>' Checked='<%# Eval("IsAlways") %>'  TextAlign="Left" />

 <asp:HiddenField ID="hd_MenuId" Value='<%# Eval("MenuId") %>' runat="server" />

==================问题分割线==============

现在的问题是,我想要取得hd_MenuI的值,却是怎么样也取不到。

 

 foreach( DataListItem item in dl.Items)

{

  HiddenField hd_m = (HiddenField)item.FindControl("hd_MenuId");

}

在这里hd_m的值总是Null。请教一下各位高手,这种情况下应该怎么取得子控件的。

问题补充: 1楼的,我不用LoadTemplate,改成把ascx里面的东西直接写进itemtemplate里的时候就可以了,所以其他地方应该是没问题,2楼的,我用你这个方法不行,因为NewDayMenu 是个用户控件,不能直接这样用,我用其他的方法也不行~。
帝之晓的主页 帝之晓 | 初学一级 | 园豆:98
提问于:2009-06-16 11:26
< >
分享
其他回答(2)
0

你的方法没错。

可能是哪里写的有问题。思路是没问题的

HiddenField hd_m = (HiddenField)(item.FindControl("hd_MenuId"));

邢少 | 园豆:10926 (专家六级) | 2009-06-16 12:39
0

你需要先找到ItemTemplate 中的自定义控件NewDayMenu,然后再从自定义控件中去找HiddenField 和CheckBox.

 

Code
foreach( DataListItem item in dl.Items)

{

NewDayMenu ndm
= item.FindControl("NewDayMenu1") as NewDayMenu ;

HiddenField hd_m
= ndm .FindControl("hd_MenuId") as HiddenField;

}
zengshunyou | 园豆:345 (菜鸟二级) | 2009-06-16 13:11
0

再细细看看NewDayMenu.ascx 里面的代码

苏飞 | 园豆:2024 (老鸟四级) | 2009-06-16 14:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册