Событие DetailsView.ItemInserted находит первичный ключ (DataKey) - PullRequest
3 голосов
/ 23 июня 2011

нетто и C # 4.

У меня есть DetailsView Control, и я использую некоторую пользовательскую логику для привязки данных.

При вводе данных в моем DetailsView я хотел бы использовать Event "Inserted" (или другое), чтобы получить из DetailsView первичный ключ для недавно вставленных данных (я полагаю, используя свойства DataKey).

К сожалению, я не могу это сделать.

Есть ли у вас какие-либо идеи, как вставить извлечение первичного ключа для элемента, вставляемого с использованием DetailsView?

Спасибо за вашу помощь!

Ответы [ 2 ]

2 голосов
/ 23 июня 2011

Прежде всего, ваш оператор SQL должен возвращать SCOPE_IDENTITY().

Во-вторых, если вы используете элемент управления ObjectDataSource, получите e.ReturnValue в событии Inserted элемента управления вашего источника данных, как в следующем примере:

protected void dsReferralInsert_Inserted(object sender, ObjectDataSourceStatusEventArgs e)
{
    int intKey;
    if (int.TryParse(e.ReturnValue, out intKey))
    {
        Response.Redirect("ReferralDetail.aspx?ReferralID=" + intKey.ToString());
    }
}

В этом примере используется новое значение ключа для перенаправления на страницу сведений.

Если вы используете элемент управления SqlDataSource, вы можете программно получить доступ либо к параметрам вывода, либо к параметрам ReturnValue, в зависимости от того, как вы написали SQL. Я приведу пример, если вы сообщите мне, какой тип доступа к данным вы используете.

2 голосов
/ 23 июня 2011

DetailsViewInsertedEventArgs.Values ​​ возвращает словарь, содержащий пары имя / значение поля для вставленной записи.

void CustomerDetailsView_ItemInserted(Object sender, 
    DetailsViewInsertedEventArgs e)
{
    var key = e.Values["Key"];

}
...