从动态网格视图中删除项目

时间:2011-07-11 18:08:00

标签: c# .net asp.net gridview sqldatasource

我有一个动态的gridview,从oracle数据库中提取数据。

<asp:GridView ID="gvData" OnRowDataBound="gvData_RowDataBound" OnPreRender="gvData_PreRender" OnSelectedIndexChanged="gvData_SelectedIndexChanged" OnLoad="gvData_Load" OnRowCommand="gvData_RowCommand" runat="server" CellPadding="4" ForeColor="#333333" AllowPaging="True" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" DataSourceID="DS" AllowSorting="True" AutoGenerateSelectButton="True" PageSize="10" ShowFooter="True">
        <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
        <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <PagerStyle BackColor="#284775" ForeColor="White" />
        <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
        <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
        <EditRowStyle BackColor="#CCCCCC" />
        <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
    </asp:GridView>
    <asp:SqlDataSource ID="DS" runat="server">
    </asp:SqlDataSource>

我正在尝试编写DELETE / UPDATE语句。我在从gridview获取值并将它们添加到参数os SQL语句时遇到问题。

protected void gvData_RowDeleting(object sender, GridViewDeleteEventArgs e)
{
    DS.DeleteCommand =
            "DELETE FROM TABLE " +
            "WHERE PROBLEM_DEPTH_MD = :PROBLEM_DEPTH_MD";
            "AND API = :API " +
            "AND BUS_AREA_ID = :BUS_AREA_ID";
    DS.DeleteParameters.Add(new Parameter("PROBLEM_DEPTH_MD", TypeCode.String, ??GridViewItemValue??));
}

我不知道如何从gridview获取值。有什么建议?谢谢!

2 个答案:

答案 0 :(得分:1)

首先,您需要在主键列的gridview中提及DataKeyName,然后您可以访问Gridview的Selected行的值,例如...... e.Keys["DataKeyName"]

如果您想访问非关键字段,那么它应该像...... e.Values["FieldName"]

提及DataKeyName,例如...... <asp:GridView ID="gvData" DataKeyNames="PrimaryKeyColumn"

答案 1 :(得分:1)

您需要为GridView设置DataKeyNames。

然后,您可以使用GridViewDeleteEventArgs获取Keys属性。这将是一个键/值对的字典,它对应于您设置的DataKeyFields。从本质上讲,它允许您获取主键 - 这是您需要删除的内容。

假设主键是PROBLEM_DEPTH_MD,API和BUS_ARE_ID,您可以将DataKeyNames设置为“PROBLEM_DEPTH_MD,API和AND BUS_ARE_ID”。

然后,您可以使用e.Keys在删除事件中获取这些键。如果循环遍历它们,您应该能够获取值以添加参数。

以下是有关此内容的更多信息: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.datakeynames.aspx