.aspx文件
<asp:datalist id="DataList1" runat="server" Width="100%" >
<ItemTemplate>
<asp:Label Runat=server ID="lblID" <%# DataBinder.Eval(Container.DataItem,"id")%></asp:Label> </ItemTemplate>
</asp:datalist>
.aspx.cs文件中
private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
if(Convert.ToBoolean(Session["admin"]))
{
Label lnk = (Label)e.Item.FindControl("lnkDelete");
Label lblID = (Label)e.Item.FindControl("lblID");
lnk.Visible=true;
lnk.Text="<a href=topicAdmin.aspx?action=delete&id="+lblID.Text+"><img src=images/del.gif border=0></a>";
}

}
这样居然取不到lblID的text属性
怎么样才能获取该控件的值呢?

解决方案 »

  1.   

    <asp:Label Runat=server ID="lblID" <%# DataBinder.Eval(Container.DataItem,"id")%></asp:Label>

    <asp:Label Runat=server ID="lblID"> <%# DataBinder.Eval(Container.DataItem,"id")%></asp:Label>
    笔误
      

  2.   

    怎么指定行?
    这是在DataList中啊
    itemTemplate模板中是一个比较复杂的表格
    用e.Item.FindControl()应该可以找到该Label的,因为前面的label已经找到,并且正确赋值了啊
      

  3.   

    在Item_DataBound()事件里绑定Dim Label1 as Label
    Label1= CType(e.Item.Cells(0).FindControl("TitleHL"),Label)  注意Label的ID为"TitleHL"不要写错.
      

  4.   

    private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
                              if(e.Item.ItemType==ListItemType.Item)
                                  {
    if(Convert.ToBoolean(Session["admin"]))
    {
    Label lnk = (Label)e.Item.FindControl("lnkDelete");
    Label lblID = (Label)e.Item.FindControl("lblID");
    lnk.Visible=true;
    lnk.Text="<a href=topicAdmin.aspx?action=delete&id="+lblID.Text+"><img src=images/del.gif border=0></a>";
    }
    }

    }
      

  5.   

    private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
    {
    // if(Convert.ToBoolean(Session["admin"]))
    // {
    Label lnk = (Label)e.Item.FindControl("lnkDelete");
    Label lblID = (Label)e.Item.FindControl("lblID");
    lnk.Visible=true;
    lnk.Text="<a href=topicAdmin.aspx?action=delete&id="+lblID.Text+"><img src=images/del.gif border=0></a>";
    // }
    }

    }
    还是不行
    调试时链接地址为topicadmin.aspx?action=delete&id=
    每个都是这样
    lblID的Text还是没能获取
      

  6.   

    在Label lnk = (Label)e.Item.FindControl("lnkDelete");
    加上断点调试时发现
    lblID的Text为空
    怎么会这样呢?
      

  7.   

    难道触发DataList控件的ItemDataBound事件时
    lblID的Text还没绑定上去吗?