如何禁用gridview中的特定命令字段?

时间:2016-02-16 10:28:22

标签: c# asp.net gridview

我有一个带有标签的gridview和一个用于编辑的命令域。 如果标签包含今天的日期,我想禁用命令字段。

应启用所有空标签的命令字段。 我怎样才能做到这一点?

由于

Aspx -

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:TemplateField HeaderText="Schedule Date">
<ItemTemplate>
<asp:Label ID="schedule" runat="server" Text='<%# Eval("Date","{0:dd-MMM-yy}") %>'></asp:Label>
</ItemTemplate>
<asp:CommandField ShowEditButton="true" EditText="Click here to Schedule/Re-Schedule" UpdateText="Submit" HeaderText="Schedule/Re-Schedule" />
</Columns>
</asp:GridView>

1 个答案:

答案 0 :(得分:1)

如果将命令字段用作linkBut​​ton:

,则效果更好
<asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" 
    onrowdatabound="gv_RowDataBound">
    <Columns>
        <asp:TemplateField HeaderText="Schedule Date">
            <ItemTemplate>
                <asp:Label ID="schedule" runat="server" Text='10:25-02-2015'></asp:Label>
            </ItemTemplate>
            </asp:TemplateField>

        <asp:TemplateField ShowHeader="False">
            <ItemTemplate>
                <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" 
                    CommandName="Edit" Text="Edit"></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>

    </Columns>
</asp:GridView>

然后你可以使用行数据绑定事件:

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            Label schedule = (Label)e.Row.FindControl("schedule");
            LinkButton LinkButton1 = (LinkButton)e.Row.FindControl("LinkButton1");
            if (schedule.Text == string.Empty)
            {
                LinkButton1.Enabled = false;
            }
            else
            {
                LinkButton1.Enabled = true;
            }
        }
    }

这会对你有所帮助!