从GridView中删除一行 [英] deleting row from gridview

查看:97
本文介绍了从GridView中删除一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有2表MachineGroups和机具。 MachineGroups有列:

  MachinegroupID
MachineGroupName
MachineGroupDesc

和机器有列:

  MachineGroupID(FK)
机号
计算机名
Machinedesc

现在我想删除一个machinegroup但不是必须的机器在里面的人。

  DELETE FROM MachineGroups
 WHERE MachineGroupID NOT IN(SELECT DISTINCT MachineGroupID FROM机)

这将删除那些没有在GridView的所有行。机= 0
我要的是只删除其删除链接被点击的行...

 < ASP:GridView控件ID =GridView1=服务器AllowSorting =真
    的AutoGenerateColumns =假CELLPADDING =1CELLSPACING =2
    的DataSourceID =SqlDataSource1前景色=#333333网格=无
     WIDTH =100%ondatabound =GridView1_DataBound1
    onrowdatabound =GridView1_RowDataBound1>
    < RowStyle的BackColor =#D0D8E8前景色=#333333HEIGHT =35px/>
    <柱体和GT;
        < ASP:BoundField的数据字段=MachineGroupID的HeaderText =MachineGroupID
            InsertVisible =FALSE只读=真SORTEX pression =MachineGroupID
            可见=FALSE/>
        < ASP:BoundField的数据字段=MachineGroupName的HeaderText =MachineGroupName
            SORTEX pression =MachineGroupName/>
        < ASP:BoundField的数据字段=MachineGroupDesc​​的HeaderText =MachineGroupDesc​​
            SORTEX pression =MachineGroupDesc​​/>
        < ASP:BoundField的数据字段=TimeAdded的HeaderText =TimeAdded
            SORTEX pression =TimeAdded/>
        < ASP:的TemplateField的HeaderText =CanBeDeletedSORTEX pression =CanBeDeleted
            可见=假>
            <&EditItemTemplate的GT;
                < ASP:复选框ID =CheckBox1=服务器
                    选中='<%#绑定(CanBeDeleted)%>' />
            < / EditItemTemplate中>
            <&ItemTemplate中GT;
                < ASP:复选框ID =CheckBox1=服务器
                    选中='<%#绑定(CanBeDeleted)%>'启用=FALSE/>
            < / ItemTemplate中>
        < / ASP:的TemplateField>
        < ASP:电脑不的HeaderText的BoundField的DataField = =无电脑只读=真
            SORTEX pression =没有电脑。/>
        < ASP:的TemplateField ShowHeader =FALSE>
            <&ItemTemplate中GT;
                < ASP:LinkBut​​ton的ID =LinkBut​​ton1=服务器的CausesValidation =FALSE
                    的CommandName =删除文本=删除>< / ASP:LinkBut​​ton的>
            < / ItemTemplate中>
        < / ASP:的TemplateField>
    < /专栏>
< ASP:SqlDataSource的ID =SqlDataSource1=服务器的ConnectionString =<%$的ConnectionStrings:SumooHAgentDBConnectionString%>中
    的SelectCommand =从MachineGroups FULL OUTER件数SELECT MachineGroups.MachineGroupID,MachineGroups.MachineGroupName,MachineGroups.MachineGroupDesc​​,MachineGroups.TimeAdded,MachineGroups.CanBeDeleted,COUNT(Machines.MachineName)JOIN机ON Machines.MachineGroupID = MachineGroups。 MachineGroupID GROUP BY MachineGroups.MachineGroupID,MachineGroups.MachineGroupName,MachineGroups.MachineGroupDesc​​,MachineGroups.TimeAdded,MachineGroups.CanBeDeleted
    DeleteCommand会=DELETE FROM MachineGroups
 WHERE MachineGroupID NOT IN(SELECT DISTINCT MachineGroupID FROM机)>
    < D​​eleteParameters>
        < ASP:参数名称=original_MachineGroupID/>
        < ASP:参数名称=original_MachineGroupName/>
        < ASP:参数名称=original_MachineGroupDesc​​/>
        < ASP:参数名称=original_CanBeDeleted/>
        < ASP:参数名称=original_TimeAdded/>
    < / DeleteParameters>
< / ASP:SqlDataSource的>


解决方案

没测试过,但方向应该是正确的:

 < ASP:SqlDataSource的ID =SqlDataSource1=服务器
    的ConnectionString =下;%$的ConnectionStrings:SumooHAgentDBConnectionString%>中
    的SelectCommand =从MachineGroups FULL OUTER件数SELECT MachineGroups.MachineGroupID,MachineGroups.MachineGroupName,MachineGroups.MachineGroupDesc​​,MachineGroups.TimeAdded,MachineGroups.CanBeDeleted,COUNT(Machines.MachineName)JOIN机ON Machines.MachineGroupID = MachineGroups。 MachineGroupID GROUP BY MachineGroups.MachineGroupID,MachineGroups.MachineGroupName,MachineGroups.MachineGroupDesc​​,MachineGroups.TimeAdded,MachineGroups.CanBeDeleted
    DeleteCommand会=DELETE FROM MachineGroups WHERE MachineGroupID = @MachineGroupID>
    < D​​eleteParameters>
        < ASP:参数名称=MachineGroupID/>
    < / DeleteParameters>
< / ASP:SqlDataSource的>

I have 2 tables MachineGroups and Machines. MachineGroups has columns:

MachinegroupID
MachineGroupName
MachineGroupDesc

And Machines has columns:

MachineGroupID (FK)
MachineID
MachineName
Machinedesc

Now I want to delete a machinegroup but not the ones that have machines in it.

DELETE FROM MachineGroups
 WHERE MachineGroupID NOT IN (SELECT DISTINCT MachineGroupID FROM Machines)

This will delete all the rows in the gridview which have no. of machines= 0 What i want is to delete only the row whose delete link is clicked...

<asp:GridView ID="GridView1" runat="server" AllowSorting="True"
    AutoGenerateColumns="False" CellPadding="1" CellSpacing="2"
    DataSourceID="SqlDataSource1" ForeColor="#333333" GridLines="None"
     Width="100%" ondatabound="GridView1_DataBound1"
    onrowdatabound="GridView1_RowDataBound1">
    <RowStyle BackColor="#D0D8E8" ForeColor="#333333" Height="35px" />
    <Columns>
        <asp:BoundField DataField="MachineGroupID" HeaderText="MachineGroupID" 
            InsertVisible="False" ReadOnly="True" SortExpression="MachineGroupID" 
            Visible="False" />
        <asp:BoundField DataField="MachineGroupName" HeaderText="MachineGroupName" 
            SortExpression="MachineGroupName" />
        <asp:BoundField DataField="MachineGroupDesc" HeaderText="MachineGroupDesc" 
            SortExpression="MachineGroupDesc" />
        <asp:BoundField DataField="TimeAdded" HeaderText="TimeAdded" 
            SortExpression="TimeAdded" />
        <asp:TemplateField HeaderText="CanBeDeleted" SortExpression="CanBeDeleted" 
            Visible="False">
            <EditItemTemplate>
                <asp:CheckBox ID="CheckBox1" runat="server"
                    Checked='<%# Bind("CanBeDeleted") %>' />
            </EditItemTemplate>
            <ItemTemplate>
                <asp:CheckBox ID="CheckBox1" runat="server"
                    Checked='<%# Bind("CanBeDeleted") %>' Enabled="false" />
            </ItemTemplate>
        </asp:TemplateField>
        <asp:BoundField DataField="No. of PCs" HeaderText="No. of PCs" ReadOnly="True"
            SortExpression="No. of PCs" />
        <asp:TemplateField ShowHeader="False">
            <ItemTemplate>
                <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False"
                    CommandName="Delete" Text="Delete"></asp:LinkButton>
            </ItemTemplate>
        </asp:TemplateField>
    </Columns>


<asp:SqlDataSource ID="SqlDataSource1" runat="server"         ConnectionString="<%$ ConnectionStrings:SumooHAgentDBConnectionString %>" 
    SelectCommand="SELECT MachineGroups.MachineGroupID, MachineGroups.MachineGroupName, MachineGroups.MachineGroupDesc, MachineGroups.TimeAdded, MachineGroups.CanBeDeleted, COUNT(Machines.MachineName) AS 'No. of PCs' FROM MachineGroups FULL OUTER JOIN Machines ON Machines.MachineGroupID = MachineGroups.MachineGroupID GROUP BY MachineGroups.MachineGroupID, MachineGroups.MachineGroupName, MachineGroups.MachineGroupDesc, MachineGroups.TimeAdded, MachineGroups.CanBeDeleted" 
    DeleteCommand="DELETE FROM MachineGroups
 WHERE MachineGroupID NOT IN (SELECT DISTINCT MachineGroupID FROM Machines)">
    <DeleteParameters>
        <asp:Parameter Name="original_MachineGroupID" />
        <asp:Parameter Name="original_MachineGroupName" />
        <asp:Parameter Name="original_MachineGroupDesc" />
        <asp:Parameter Name="original_CanBeDeleted" />
        <asp:Parameter Name="original_TimeAdded" />
    </DeleteParameters>
</asp:SqlDataSource>

解决方案

Not tested, but the direction should be right:

<asp:SqlDataSource ID="SqlDataSource1" runat="server"
    ConnectionString="<%$ ConnectionStrings:SumooHAgentDBConnectionString %>" 
    SelectCommand="SELECT MachineGroups.MachineGroupID, MachineGroups.MachineGroupName, MachineGroups.MachineGroupDesc, MachineGroups.TimeAdded, MachineGroups.CanBeDeleted, COUNT(Machines.MachineName) AS 'No. of PCs' FROM MachineGroups FULL OUTER JOIN Machines ON Machines.MachineGroupID = MachineGroups.MachineGroupID GROUP BY MachineGroups.MachineGroupID, MachineGroups.MachineGroupName, MachineGroups.MachineGroupDesc, MachineGroups.TimeAdded, MachineGroups.CanBeDeleted" 
    DeleteCommand="DELETE FROM MachineGroups WHERE MachineGroupID = @MachineGroupID">
    <DeleteParameters>
        <asp:Parameter Name="MachineGroupID" />
    </DeleteParameters>
</asp:SqlDataSource>

这篇关于从GridView中删除一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆