情况大概是这样:
 datalist控件,id 为 dlPost
我用了一个方法BindDataList()来绑定,{
略~~
this.dlPost.DataSource = ps;
this.dlPost.DataKeyField = "TopicID";
this.dlPost.DataBind();
}
前台用了一个隐藏的Label控件来记录当前UserID值
<asp:Label ID="lblUserId" runat="server" Text='<%# Eval("UserID") %>' Visible="false">
dlPost控件里有两个LinkButton按钮
希望能够点击事件来找到相对的UserID值问题:
protected void Lkb_Click(object sender, EventArgs e)
    {
      //需要找到UserID值,这里我该如何获得UserID的值?
      ???
      Response.Write(UserID.ToString());
    }

解决方案 »

  1.   

    1。
    Lkb 在 DataList 里面?2。
    protected void Lkb_Click(object sender, EventArgs e)
    {
            LinkButton Lkb = sender as LinkButton;
            DataListItem item = Lkb.NamingContainer as DataListItem;
            Label lblUserId = item.FindControl("lblUserId");
            int UserID = int.Parse(lblUserId.Text);
            Response.Write(UserID.ToString());
    }
      

  2.   

    问题没清楚,
    1.那个Btn是在list里面还是外面,
    2,哪果是外面,那一般情况下在list里用checkBox来控制
    3,如果Btn在里面,可以在aspx页面里绑定一个ID给BTN的CommandArgument属性就可以取到了
    一般不hidden的lb作这种参数传递
      

  3.   

    this.dlPost.DataKeyField = "TopicID";--为什么不用userid当datakeyfield了?这样你就不用绑定一个label了
      

  4.   

    linkbutton如果在datalist里面,就要设置button的commandname,然后在datalist的itemcommand事件里面依据e.commandname =="按钮的commandname"来处理相关的单击事件
      

  5.   

    不要直接去写dlPost里两个LinkButton按钮的Click事件代码
    分别设它们的下面两个的属性
    CommandArgument = "LinkButton1"//随便你设,作为接下来你想写的事件代码的标识CommandName = "Update" //也可以是"Edit" 、"Delete" 、“Cancel”等,分别对应dlPost里的事件UpdateCommand、EditCommand、DeleteCommand、CancelCommand等。在上述参数对应的dlPost事件里写代码,可以直接用this.lblUserId.Text获得UserID用CommandArgument来区分是来自那个LinkButton如:
     protected void dlReceiveList_UpdateCommand(object source, DataListCommandEventArgs e)
        {
            if (e.CommandArgument.ToString() == "LinkButton1")//用户单击了LinkButton
            {
                //验证权限
            }
            else//用户单击了另一个LinkButton
            {}
      

  6.   

    出不来迈?
    竟然如此诡异?那么你用 LS 朋友的 ItemCommand 事件处理吧,
    本来我的代码是直接符合的代码场景的,嘿嘿
      

  7.   

    我是这样写的:
    前台:
    <asp:DataList ID="dlPost" runat="server" OnUpdateCommand="dlPost_UpdateCommand">
        <ItemTemplate>
    略~~
    <asp:Label ID="lblUserId" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"UserID") %>' Visible="false">
     <%# DataBinder.Eval(Container.DataItem,"NickName") %><br /><br />
                        <asp:LinkButton ID="FriendLbn" Text="加好友" runat="server"  CommandArgument="FriendLbn" CommandName="Update"></asp:LinkButton><br /><br />
                        
        </ItemTemplate>
    </asp:DataList>  
    后台:
        protected void dlPost_UpdateCommand1(object source, DataListCommandEventArgs e)
        {
            if (e.CommandArgument.ToString() == "FriendLbn")
            {
                Response.Write(this.lblUserId.Text);
            }
        }
      

  8.   

    <asp:LinkButton ID="FriendLbn" Text="加好友" runat="server"   CommandName="Update"></asp:LinkButton>不要用CommandArgument了,因为就一个commandname为update的linkbutton了
            {
                Label upLab= (Label)e.Item.FindControl("lblUserId");
                response.write(upLab.Text);
            }
      

  9.   

    protected void dlPost_UpdateCommand1(object source, DataListCommandEventArgs e)
        {
           Label upLab= (Label)e.Item.FindControl("lblUserId");
                response.write(upLab.Text);
        }你的代码完全错误
      

  10.   

    后台:
    protected void dlPost_UpdateCommand1(object source, DataListCommandEventArgs e)
    {
    if (e.CommandArgument.ToString() == "FriendLbn")
    {
    Response.Write(this.lblUserId.Text);
    }
    }
    ==========
    1。
    既然显示指定的是 UpdateCommand 事件就不需要判断  CommandArgument 了2。
    Label lblUserId= (Label)e.Item.FindControl("lblUserId");
    Response.write(lblUserId.Text);3。
    看书看书看书啊,怎么就喜欢闷头coding呢