日期:2014-05-17  浏览次数:20527 次

如何获取DataList中的Lable控件的Text值
我的源码:
protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        string str=(this.DataList1.Items[e.Item.ItemIndex].FindControl("lblCommentNumber") as Label).Text;

    }

<asp:DataList ID="DataList1" runat="server">
        <ItemTemplate>
            <asp:Label ID="lblCommentNumber" runat="server" Text='<%#CommentsNumber %>'></asp:Label>
        </ItemTemplate>
    </asp:DataList>

但是报错,错误是:
索引超出范围。必须为非负值并小于集合大小
参数名: index

我感觉没有错了,GridView都是这样取值的,请各位大神给小弟讲讲,谢谢!
asp.net DataList 获取DataList控件中的值 C#

------解决方案--------------------
换成这个:
 string str = (e.Item.FindControl("lblCommentNumber") as Label).Text;

------解决方案--------------------
其实你的html有点问题:


另外想在OnItemDataBound获取到值,有如下几种方法,可以参考:
第一种:

 protected void DataList1_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        if (e.Item.ItemType == ListItemType.AlternatingItem 
------解决方案--------------------
 e.Item.ItemType == ListItemType.Item)
        {
            if (e.Item.FindControl("lblCommentNumber") != null)
            {
               Label lbl = (Label)e.Item.FindControl("lblCommentNumber");
               string str = lbl.Text;