复选框字段值控制按钮可见性

时间:2011-12-05 11:27:03

标签: c# asp.net

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

2 个答案:

答案 0 :(得分:0)

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

AutoPostBack="True"

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

答案 1 :(得分:0)

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>

你很好