如果数据库表中的值,则禁用删除按钮 - >列为true或已检查

时间:2009-09-23 15:32:31

标签: c# asp.net database sql-server-2005 gridview

好的......我有一个名为employees的数据库表..

这个列有ID,Name,datejoined和Cannotbedeleted(复选框)......

现在我想添加一个删除列,在单击时删除行。

但是如果Cannotbedeleted字段为true(已选中),则有些条目无法删除...因此删除按钮对于这些行应该是不可见的。

请告诉我如何做到这一点......

                                              

            <asp:CheckBoxField DataField="CannotBeDeleted" HeaderText="CannotBeDeleted" 
                SortExpression="CannotBeDeleted" />
            <asp:BoundField DataField="TimeAdded" HeaderText="TimeAdded" 
                SortExpression="TimeAdded" />
            <asp:TemplateField ShowHeader="False">
                <ItemTemplate>
                    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"   
                        CommandName="Delete" Text="Delete" ></asp:LinkButton> 
                </ItemTemplate>
            </asp:TemplateField>
        </Columns>

    </asp:GridView>

我也试过在删除模板字段中使用... '&gt;                     

但是我不知道在代码背后做了什么?  protected bool GetShowDeleteButton()     {

}

解决方案如下....但是有一种方法可以在我点击gridview中的删除按钮后刷新页面....

2 个答案:

答案 0 :(得分:2)

尝试循环遍历GridView_DataBound中的行,并隐藏已选中复选框的每一行的按钮。

protected void GridView1_DataBound(object sender, EventArgs e)
{
    foreach(GridViewRow myRow in GridView1.Rows)
    {
        //Find the checkbox
        CheckBox ckbox1 = (CheckBox)myRow.FindControl("nameOfCheckBox");
        if(ckbox1.Checked)
        {
            //Find the Delete linkbutton and hide it
            LinkButton deleteButton = (LinkButton)myRow.FindControl("nameOfDeleteLinkButton");
            deleteButton.Visible = false;
        }
    }
}

现在,这就是你需要的差异:

将CheckBox列实现为TemplateField,其中包含CheckBox。您可以将CheckBox绑定到数据源中的数据。

答案 1 :(得分:-1)

这样做:

if($row['cannotbedeleted'] == true) {
$buttonDisplay = 'none';
}

echo "<button onclick='delete();' style='display: $buttonDisplay;'>Delete</button>";

那么这将是PHP的解决方案,但如果按钮的样式有“display:none;”在其中按钮将被隐藏。 :) HTH