C# DetailsView.ItemInserted事件查找主键(DataKey)

C# DetailsView.ItemInserted事件查找主键(DataKey),c#,asp.net,detailsview,C#,Asp.net,Detailsview,net和C#4 我有一个DetailsView控件,我使用一些自定义逻辑进行数据绑定 在我的DetailsView中输入数据时,我希望使用事件“Inserted”(或其他)从DetailsView中获取最近插入数据的主键(我假设使用DataKey属性) 不幸的是我做不到 您是否知道如何使用DetailsView为正在插入的项目插入检索主键 谢谢你的帮助 获取包含插入记录的字段名/值对的字典 void CustomerDetailsView_ItemInserted(Object sender,

net和C#4

我有一个
DetailsView控件
,我使用一些自定义逻辑进行数据绑定

在我的DetailsView中输入数据时,我希望使用
事件“Inserted”
(或其他)从DetailsView中获取最近插入数据的主键(我假设使用DataKey属性)

不幸的是我做不到

您是否知道如何使用DetailsView为正在插入的项目插入检索主键

谢谢你的帮助

获取包含插入记录的字段名/值对的字典

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

}

首先,SQL语句需要返回
SCOPE\u IDENTITY()

其次,假设您使用的是
ObjectDataSource
控件,则在数据源控件的
Inserted
事件中获取
e.ReturnValue
,如下例所示:

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
控件,则可以通过编程方式访问输出参数或返回值参数,具体取决于编写SQL的方式。如果您告诉我您使用的是哪种数据访问方式,我会举个例子。

Akram谢谢,但您的代码似乎不适合我。事实上,我需要获取主键和e。Values无法检索它,因为它不存储在as字段中。尝试使用调试查看。让我知道你的想法。谢谢。我注意到你说你使用自定义逻辑进行数据绑定,请发布它。另外,请发布您正在使用的SQL。您好,谢谢您的代码。我理解您的观点,并且在我使用EntityDataSource的案例中使用了非常类似的方法来解决问题。据我所知,不可能直接从DetailsViewSertedEventArgs获取PK,因为它包含的值不包括PK字段。告诉我你的想法。现在谢谢你!听起来您现在走对了——在数据源级别获取新密钥。不客气!