2014-10-03 49 views
0

我有一个带有2个模板域的gridview,一个是复选框,另一个是下拉列表。如果用户选中该复选框,我希望能够使该行的下拉列表可见。在Gridview中,当一个复选框被选中时,下拉框会显示出来

<asp:TemplateField HeaderText="Follow-up Needed" ItemStyle-Width="75px"> 
       <ItemStyle HorizontalAlign="Center" /> 
        <ItemTemplate> 
         <asp:CheckBox ID="CBFollowUp" runat="server" AutoPostBack="true"/> 
        </ItemTemplate> 
</asp:TemplateField> 
<asp:TemplateField HeaderText="Follow-Up Assignment" ItemStyle-Width="100px"> 
      <ItemStyle HorizontalAlign="Center" /> 
       <ItemTemplate> 
        <asp:DropDownList ID="DropDownListFollowUpUser" runat="server" Visible="false"></asp:DropDownList> 
       </ItemTemplate> 
</asp:TemplateField> 

我试图把逻辑中的RowDataBound,但在回发我失去该复选框的选择,但如果我这样做!的IsPostBack对我的数据绑定,那么就不会在选择一个复选框火的RowDataBound。

我不知道我需要做什么逻辑,以使这个流体,我需要在OnCheckedChanged,或JavaScript?

谢谢你的任何反馈。

回答

0

一种选择是使用OnCheckChanged事件,就像你想象的那样。首先将其添加到您的CheckBox。

<asp:CheckBox ID="CBFollowUp" runat="server" 
    AutoPostBack="true" 
    OnCheckChanged="CBFollowUp_CheckChanged" /> 

然后在代码隐藏处理它。在这里,您可以找到与刚刚单击的CheckBox位于同一行内的DropDownList,然后根据需要隐藏/显示它。

protected void CBFollowUp_CheckChanged(object sender, EventArgs e) 
{ 
    CheckBox CBFollowUp = (CheckBox)sender; 
    GridViewRow row = (GridViewRow)CBFollowUp.NamingContainer; 

    DropDownList DropDownListFollowUpUser = (DropDownList)row.FindControl("DropDownListFollowUpUser"); 
    DropDownListFollowUpUser.Visible = CBFollowUp.Checked; 
} 
相关问题