如何在点击按钮时获取转发器中已选中复选框的数据?

时间:2012-03-29 14:14:19

标签: asp.net repeater

我有这样的转发器代码。现在,当我点击按钮时我想要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>`

在代码背后我必须在按钮点击事件上写什么?

1 个答案:

答案 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; }
        }
    }