我有一个动态的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获取值。有什么建议?谢谢!
答案 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