紧急求救: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呢