ObjectDataSource.Insert всегда возвращает -1 - PullRequest
0 голосов
/ 11 ноября 2011

Пытаясь получить новый идентификатор строки, я искал повсюду и пробовал общие решения, которые, кажется, работают для всех остальных. Я не могу изменить базу данных, но я знаю, что параметр VersionID установлен с идентификатором области. последняя строка в SP возвращается (@@ VersionID) Я также попытался поместить это в вставленное событие

protected void VersionDataSource_Inserted(object sender, ObjectDataSourceStatusEventArgs    e)
{
    int returnValue = (int)e.OutputParameters;

}

однако он всегда возвращает -1, я не могу получить новый идентификатор строки, я попытался сделать вывод параметра Direction, а также returnValue. Совершенно потеряв, потратили целый день на эту хрень.

Ответы [ 2 ]

0 голосов
/ 11 ноября 2011

Вы не разместили разметку, но у вас должен быть параметр, определенный как выходной параметр:

<asp:Parameter Direction="Output" Name="VersionID"  Type="Int32" /> 

С учетом вышеизложенного вы сможете получить полученное значение следующим образом:

protected void SqlDataSource1_Inserted(object sender, SqlDataSourceStatusEventArgs e) 
{ 
    int id = Convert.ToInt32(e.Command.Parameter["VersionID"].Value); 
} 
0 голосов
/ 11 ноября 2011

Кажется, что Выходные параметры - это словарь, я бы предложил

int returnValue = (int)e.OutputParameters["VersionID"].Value;
...