Удалить элемент из динамического вида сетки - PullRequest
0 голосов
/ 11 июля 2011

У меня динамическое представление сетки с данными, извлеченными из базы данных 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 и добавлением их в параметры операторов 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??));
}

Я не знаю, как получить значение из сетки.Какие-либо предложения?Спасибо!

Ответы [ 2 ]

1 голос
/ 11 июля 2011

Вам нужно установить DataKeyNames для вас GridView.

Затем вы можете использовать GridViewDeleteEventArgs, чтобы получить свойство Keys.Это будет словарь пар «ключ / значение», которые соответствуют заданным вами полям DataKeyFields.По сути, он позволяет вам получить ваши первичные ключи - это то, что вам нужно удалить.

при условии, что первичными ключами являются PROBLEM_DEPTH_MD, API и BUS_ARE_ID, вы должны установить для DataKeyNames значение "PROBLEM_DEPTH_MD, API, ANDBUS_ARE_ID ".

Затем вы можете получить эти ключи в событии удаления с помощью e.Keys.Если вы зациклите их, вы сможете получить значения для добавления своих параметров.

Вот еще немного информации об этом: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.gridview.datakeynames.aspx

1 голос
/ 11 июля 2011

Прежде всего, вам нужно упомянуть DataKeyName в вашем сеточном представлении столбца Первичного ключа, а затем вы можете получить доступ к значению Выбранной строки Gridview, например ... e.Keys["DataKeyName"]

Если выхотите получить доступ к неключевому полю, тогда оно должно выглядеть следующим образом ... e.Values["FieldName"]

Упоминать DataKeyName как ... <asp:GridView ID="gvData" DataKeyNames="PrimaryKeyColumn"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...