C# 如果数据库表';s-->;列为true或已选中

C# 如果数据库表';s-->;列为true或已选中,c#,asp.net,database,sql-server-2005,gridview,C#,Asp.net,Database,Sql Server 2005,Gridview,好的。。。我有一个名为employees的数据库表 <asp:CheckBoxField DataField="CannotBeDeleted" HeaderText="CannotBeDeleted" SortExpression="CannotBeDeleted" /> <asp:BoundField DataField="TimeAdded" HeaderText="TimeAdded"

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

            <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>
这包含名为ID、Name、datejoined和Cannotbedeleted的列(复选框)

            <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>
现在我想添加一个delete列,单击该列时删除行

            <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>
但是,如果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>
请告诉我如何做到这一点

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

            <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>
解决方案如下。。。。但是,有没有一种方法可以在单击gridview中的“删除”按钮后刷新页面……

按如下方式执行:

            <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>
if($row['cannotbedeleted'] == true) {
$buttonDisplay = 'none';
}

echo "<button onclick='delete();' style='display: $buttonDisplay;'>Delete</button>";
if($row['cannotbedeleted']==true){
$buttonDisplay='none';
}
回应“删除”;

这就是PHP中的解决方案,但如果按钮的样式为“display:none”,则按钮将被隐藏HTH

尝试在GridView_数据绑定中的行中循环,并隐藏选中复选框的每一行的按钮

            <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>
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;
        }
    }
}
现在,这里是您需要的区别:

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

将复选框列实现为一个模板字段,其中包含一个复选框。您可以将复选框绑定到数据源中的数据。

向我们展示您的尝试,并解释它是如何不起作用的,我们将尽最大努力帮助您。您明白我想说的吗。。。??谢谢教授,但我不知道PHP。。。我用C#做这件事。。如果这是C#的话就太好了。。感谢-1使用display=none从客户端“隐藏”功能。这是一个坏主意-客户端可以很容易地破解页面以找回按钮。最好在服务器端处理(不要忘记在发布事件时再次验证)。该死的,那太可怕了,那天我一定喝醉了:Perror。。。对象引用未设置为对象的实例。描述:执行当前web请求期间发生未处理的异常。请查看堆栈跟踪以了解有关错误的更多信息以及错误在代码中的起源。异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。源错误:第167行://查找复选框第168行:复选框ckbox1=(复选框)myRow.FindControl(“CanBeDeleted”);第169行:如果(ckbox1.选中)第170行:{Line 171://找到删除链接按钮并隐藏它最有可能发生的错误是因为您没有将复选框列设置为TemplateColumn。您需要这样做,在模板中放置一个复选框,将复选框绑定到数据库中的相应字段,然后将“nameOfCheckBox”替换为复选框的名称。对。这是t他创建了一个应更改为模板字段的字段。
            <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>