日期:2014-05-18  浏览次数:20374 次

紧急求救:datalist里的控件事件
情况大概是这样:
  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。
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());
}
------解决方案--------------------
问题没清楚,
1.那个Btn是在list里面还是外面,
2,哪果是外面,那一般情况下在list里用checkBox来控制
3,如果Btn在里面,可以在aspx页面里绑定一个ID给BTN的CommandArgument属性就可以取到了
一般不hidden的lb作这种参数传递

------解决方案--------------------
不要直接去写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
{}
------解决方案--------------------
protected void dlPost_UpdateCommand1(object source, DataListCommandEventArgs e)
{
Label upLab= (Label)e.Item.FindControl( "lblUserId ");
response.write(upLab.Text);
}

你的代码完全错误
------解决方案--------------------
后台:
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呢