我有这样的转发器代码。现在,当我点击按钮时我想要job_id
选中的复选框。
`<asp:Repeater ID="rptJob" runat="server" >
<ItemTemplate>
<td valign="middle" style="padding-left: 10px; padding-right: 10px">
<table align="center" cellpadding="0" cellspacing="0" border="0" width="604">
<tr>
<td width="3%" valign="top">
<asp:CheckBox ID="CheckBox1" runat="server" CssClass="search-link"/>
</td>
<td valign="middle" align="left">
<a href="display_job.aspx?jobId=`<%# Eval("job_id")`%>&empId= "` # Eval("emp_id") %>"` target="_blank">
<asp:Label ID="title" runat="server">
<%#DataBinder.Eval(Container.DataItem, "job_title")%> </asp:Label>
</a> </td>
</asp:Repeater>`
在代码背后我必须在按钮点击事件上写什么?
答案 0 :(得分:0)
有很多方法可以解决这个问题。假设按钮单击导致回发我会选择两个中的一个:
切换到ListView控件(而不是Repeater)并使用此DataKeyNames属性。您还需要为CheckBox的CheckChanged事件添加处理程序。这里接受的答案应该有助于实现处理程序:http://forums.asp.net/t/1581511.aspx/1
对CheckBox控件进行子类化并添加属性以存储作业ID。为CheckChanged事件添加处理程序(在处理程序中,将sender参数强制转换为新的子类复选框)。在aspx / ascx页面中,将job_id绑定到新添加的属性。
[ToolboxData(@"<{0}:JobCheckBox runat=""server""></{0}:JobCheckBox>")]
public class JobCheckBox : CheckBox
{
[Category("Data")]
[DefaultValue(0)]
[Description("The Job ID associated with this checkbox.")]
// Assuming the job ID is an int
public int JobId
{
get { return (ViewState["JobId"] is int) ? (int)ViewState["JobId"] : 0; }
set { ViewState["JobId"] = value; }
}
}