我的asp.net listview项目模板中有html标签,
<td>
<asp:CheckBox runat="server" ID="chkStudentStatus" Text='<%# GetStatusString(Eval("StudentStatus").ToString()) %>' CommandName='<%#Eval("StudentID")%>' OnCheckedChanged="chkStudentStatus_CheckedChanged" Checked='<%#Eval("StudentStatus") %>' AutoPostBack="True" />
</td>
当复选框值改变时,我是在“chkStudentStatus_CheckedChanged”函数中获取Command Name值
答案 0 :(得分:6)
试试这个:
短而简单
<强> Refrence 强>
您的复选框
<td>
<asp:CheckBox runat="server" ID="chkStudentStatus" Text='<%# GetStatusString(Eval("StudentStatus").ToString()) %>' CommandName='<%#Eval("StudentID")%>' OnCheckedChanged="chkStudentStatus_CheckedChanged" Checked='<%#Eval("StudentStatus") %>' AutoPostBack="True" />
</td>
中的代码
protected void chkStudentStatus_CheckedChanged(object sender, EventArgs e)
{
var chk = (CheckBox)sender;
var studentID = chk.Attributes["CommandName"];
}
你可以提供任何命名属性,即 xyz ='&lt;%#Eval(“StudentID”)%&gt;'
比 在代码背后
protected void chkStudentStatus_CheckedChanged(object sender, EventArgs e)
{
var chk = (CheckBox)sender;
var studentID = chk.Attributes["xyz"];
}
答案 1 :(得分:1)
使用 CommandArgument
存储StudentID
代替CommandName
。但是,由于您要处理CheckedChangedEvent
,因此没有CommandName
或CommandArgument
。
我会使用HiddenField
来存储学生ID。然后,您可以通过以下方式从CheckedChangedEvent
访问此控件:
protected void chkStudentStatus_CheckedChanged(Object sender, EventArgs e)
{
var chk = (CheckBox) sender;
var item = (RepeaterItem) sender.NamingContainer;
var hiddenIdControl = (HiddenField)item.FindControl("hiddenIdControl");
int studentID = int.Parse(hiddenIdControl.Value);
}
答案 2 :(得分:-1)
var item = (RepeaterItem) sender.NamingContainer;
更改为:
var item = (RepeaterItem) chk.NamingContainer;