<asp:datalist id="DL_LZR" runat="server" Width="100%" BorderColor="Black" RepeatDirection="Horizontal" RepeatColumns="6" Border="1">
    <ItemTemplate>
        <asp:Label id="Label3" runat="server">
<%# DataBinder.Eval(Container.DataItem, "AccName") %></asp:Label>
    </ItemTemplate>
</asp:datalist>
在编程时,无法通过((Label)DL_LZR.Items[i].Controls[1]).Text取值方式得到,不知道什么原因?

解决方案 »

  1.   

    ((Label)DL_LZR.Items[i].Controls[1]).Text
    ---->
    Label lbl=(Label)e.Item.FindControl("Label3");
    string str=lbl.Text;
      

  2.   

    如果我写成 <asp:Label id="Label3" runat="server"  Text='<%# DataBinder.Eval(Container.DataItem, "AccName") %>'></asp:Label>
    或者如果不是数据绑定,而是常量:
    <asp:Label id="Label3" runat="server">
    xxx</asp:Label>
    就可以通过((Label)DL_LZR.Items[i].Controls[1]).Text取值方式得到。
    我想知道具体的原因。
      

  3.   

    <asp:Label id="Label3" runat="server">
    <%# DataBinder.Eval(Container.DataItem, "AccName") %></asp:Label>这样子的绑定方法生成的页面都是没有错误的,就是取值的时候有问题,不知道这样的写法和<asp:Label id="Label3" runat="server"  Text='<%# DataBinder.Eval(Container.DataItem, "AccName") %>'></asp:Label>在.net中的差异什么,为什么第一种取到的都是空字符串。
      

  4.   

    <asp:Label id="Label3" runat="server">
    <%# DataBinder.Eval(Container.DataItem, "AccName") %></asp:Label>
    ++++++++++++++++++++++
    这种写法用XXX.Text是获取不到值的,因为根本就不是控件的Text<asp:Label id="Label3" runat="server"  Text='<%# DataBinder.Eval(Container.DataItem, "AccName") %>'></asp:Label>
    ++++++++++++++++++++++
    你可以比较这两种写法在生成Html静态页面后的差别就知道了.在.net中的差异什么,为什么第一种取到的都是空字符串。
    ++++++++++++++++++++++
    第一种你可以试着用控件.InnerText或者InnerHTML来获取试试。
      

  5.   

    1 DL_LZR.Items[i].Controls[1].Count 看看它返回值是多少2 DL_LZR.Items[i].Controls[1].Controls[?] 你取得的值在某个格子里
      

  6.   

    我看过了,两种方法生成的Html静态页面后的源代码是一样的,而且在MSDN上面也有说:可以通过使用 Text 属性或作为 <Label> 元素的内容指定标签的文本。就是说我写的两种方式都是设置Label的Text属性。只是通过设置内部文本的数据绑定方式,在后台程序中获取到的Label的控件的数据就是为空字符串。但是如果通过设置内部文本为一个常量,如“XXX”,通过((Label)DL_LZR.Items[i].Controls[1]).Text得到的也是“XXX”。
      

  7.   

    to:yuelailiu(洞庭湖)
    它的数据肯定是存在,可以获取到它所有的属性,也都是正确的,包括我给他设置的一个自己定义的属性value,就是Text属性的值为空字符串。
      

  8.   

    那种方法是取不到模板列中的值的,
    如想可以使用 jxufewbt(我的目标是5星) 提供的方法。
      

  9.   

    我发现根本不是DataList的问题,是Label的问题。我重新测试了一个:
    <asp:label id="LB_LZQK" runat="server" Text='<%# Request["BH"]%>'></asp:label>
    就可以取得:LB_LZQK.Text
    但是:<asp:label id="LB_LZQK" runat="server"><%# Request["BH"]%></asp:label>
    取到的LB_LZQK.Text就是一个空字符串
    但是两种方式生成的Html代码都是正确的。可能我对Label控件不够了解。希望大虾们帮忙我。