<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取值方式得到,不知道什么原因?
<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取值方式得到,不知道什么原因?
---->
Label lbl=(Label)e.Item.FindControl("Label3");
string str=lbl.Text;
或者如果不是数据绑定,而是常量:
<asp:Label id="Label3" runat="server">
xxx</asp:Label>
就可以通过((Label)DL_LZR.Items[i].Controls[1]).Text取值方式得到。
我想知道具体的原因。
<%# DataBinder.Eval(Container.DataItem, "AccName") %></asp:Label>这样子的绑定方法生成的页面都是没有错误的,就是取值的时候有问题,不知道这样的写法和<asp:Label id="Label3" runat="server" Text='<%# DataBinder.Eval(Container.DataItem, "AccName") %>'></asp:Label>在.net中的差异什么,为什么第一种取到的都是空字符串。
<%# 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来获取试试。
它的数据肯定是存在,可以获取到它所有的属性,也都是正确的,包括我给他设置的一个自己定义的属性value,就是Text属性的值为空字符串。
如想可以使用 jxufewbt(我的目标是5星) 提供的方法。
<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控件不够了解。希望大虾们帮忙我。