.NET中获取DataList内LinkButton点击后的文本值问题
方法1:直接通过触发源获取文本值
后台的click事件里,你可以直接把触发事件的sender转换成LinkButton,直接读取它的Text属性,完全不用遍历DataList:
protected void click(object sender, EventArgs e) { LinkButton clickedBtn = sender as LinkButton; if (clickedBtn != null) { string btnText = clickedBtn.Text; // 这里将btnText存入变量做后续处理即可 } }
方法2:用CommandArgument传递值(更稳妥)
如果担心Text可能被前端样式或其他操作意外修改,也可以把Id值绑定到CommandArgument属性,后台直接读取这个参数:
前端修改:
<asp:LinkButton OnClick="click" runat="server" ID="label" CommandArgument='<%# Eval("Id") %>'> <%# Eval("Id")%> </asp:LinkButton>
后台事件:
protected void click(object sender, EventArgs e) { LinkButton clickedBtn = sender as LinkButton; if (clickedBtn != null) { string idValue = clickedBtn.CommandArgument; // 这里使用idValue即可,和原Text值一致 } }
为什么不能直接用ID访问?
因为DataList是数据绑定控件,ASP.NET会为每个重复生成的控件自动重命名ID(比如变成label_0、label_1这类格式),所以你没法在后台直接通过原IDlabel定位到点击的那个按钮,必须通过事件触发源sender来获取目标控件。
内容的提问来源于stack exchange,提问作者amir aabas rafighi
相关产品推荐
相关产品推荐

