在Gridview中,当选中复选框时,可以看到下拉框

时间:2014-10-03 13:40:34

标签: c# asp.net

我有一个包含2个模板字段的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中,但是在回发中我丢失了复选框选择,但是如果我在我的Databind上执行!isPostBack,那么当选中一个复选框时它不会触发RowDataBound。

我不知道我需要在哪里以及使用什么逻辑来制作这个流畅的,我是否需要在OnCheckedChanged或javascript中进行此操作?

感谢您的任何反馈。

1 个答案:

答案 0 :(得分:0)

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

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

然后在你的代码隐藏中处理它。在这里,您会发现DropDownList与您刚刚单击的CheckBox位于同一行,然后根据需要隐藏/显示它。

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