中继器内的复选框,如何在检查更改功能中获取命令名称值

时间:2013-08-26 07:50:39

标签: asp.net asp.net-4.5

我的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值

3 个答案:

答案 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,因此没有CommandNameCommandArgument

我会使用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;