Checkboxfield值控制按钮可见性

本文关键字:可见性 按钮 控制 Checkboxfield | 更新日期: 2023-09-27 18:16:45

我有一个gridview,它以行显示数据库表的内容。这里有一个CheckboxField和一个Select按钮。当checkboxfield被选中时,我想将按钮可见性设置为false。

这是我的aspx页面:

<asp:DetailsView ID="DetailsViewERgo" runat="server" Height="50px"
    Width="100%" AutoGenerateRows="False" CellPadding="4" 
    DataSourceID="LinqDataSourceErgo" ForeColor="#333333" GridLines="None" 
    HeaderText="Σύντομη Περιγραφή Επιλεγμένου Έργου">      
    <Columns>
        <asp:CheckBoxField DataField="Diekperewsi" HeaderText="Answered" 
            SortExpression="Diekperewsi" Visible="True" 
            ItemStyle-HorizontalAlign="Center">
            <ItemStyle HorizontalAlign="Center" />
        </asp:CheckBoxField>
        <asp:TemplateField HeaderText="Insert Answer" ShowHeader="False">
            <ItemTemplate>
                <center>
                    <asp:Button ID="Button1"  runat="server" CausesValidation="False" 
                        CommandName="Select" Text="Επιλογή" Visible="true" >
                    </asp:Button>
                </center>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

我试过这个,但只适用于复选框

protected void GridViewAitima_RowDataBound(object sender, GridViewRowEventArgs e)
{     
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        CheckBox cb = (CheckBox)e.Row.FindControl("Diekperewsi");
        Button b = (Button)e.Row.FindControl("Button1");
        if (!cb.Checked)
        {
            b.Visible = false;
        }
        else
        {
            b.Visible = true;
        }
    }
}

Checkboxfield值控制按钮可见性

您的代码将在服务器端运行,但看起来好像您的复选框的AutoPostBack属性未设置为true -

AutoPostBack="True"

因此,当选中复选框时,代码不会立即运行,它只会在另一个事件导致页面回发后运行。

CheckBoxField没有id,因此您无法通过id找到它,而且它没有值属性。我建议您使用模板字段,就像您使用的按钮,而是把一个复选框在它。

所以:

<asp:CheckBoxField DataField="Diekperewsi" HeaderText="Answered" 
                    SortExpression="Diekperewsi" Visible="True" 
                    ItemStyle-HorizontalAlign="Center">
                <ItemStyle HorizontalAlign="Center" />
</asp:CheckBoxField>

说:

 <asp:TemplateField>
                <ItemTemplate>
                <asp:CheckBox ID="Diekperewsi" Enabled="false" Checked='<%#Eval("Diekperewsi")%>' runat="server" />
                </ItemTemplate>
 </asp:TemplateField>

and you are good