Как отправить вход Int32 в базу данных через параметр хранимой процедуры SqlDataSource в Asp.net

Вопрос:

В принципе, у меня есть Gridview. Я получаю текстовое значение определенной ячейки и помещаю в asp-метку.

Теперь я хочу использовать этот текст ярлыка как вход для хранимой процедуры на SqlDatasource, например, так

       <asp:SqlDataSource ID="AddressContactSource"
runat="server"
ConnectionString="<%$ ConnectionStrings:UACOrdersConnectionString %>"
SelectCommand="GetAddressContact"
SelectCommandType="StoredProcedure">
<SelectParameters>
<asp:ControlParameter ControlID="Silver"
Name="@AccountID"
PropertyName="Text"
Type="Int32" DefaultValue="2624" />

</SelectParameters>
</asp:SqlDataSource>

Проблема в том, что это не работает, потому что AccountID (входной параметр для сохраненного процесса) является int32, а текст Label — строкой, поэтому он не показывает никаких результатов в представлении Details, связанном с SqlDatasource.

Теперь у меня есть метод для выбранного индекса, измененный в коде для gridview, который помещает ячейку.

  protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{


string temp = GridView1.Rows[1].Cells[5].Text;
Silver.Text = temp;
int temp2 = Convert.ToInt32(temp, 10);
Parameter p = new Parameter();
p.Direction = ParameterDirection.Input;
p.Type = TypeCode.Int32;
p.Name = "@AccountID";
AddressContactSource.SelectParameters.Add(p);
AddressContact.DataBind();
updatepanel1.Update();
}

Мой код компилируется и не генерирует никаких исключений при отладке. Я знаю, что это близко, но Parameter не имеет конструктора, который принимает int. Поэтому я не могу добавить его. Итак, что мне делать?

Лучший ответ:

Вам не нужно, чтобы имя параметра начиналось с @ (вам это нужно, только если входной параметр хранимой процедуры начинается с @@).

Также я считаю, что вам не нужно добавлять параметр в обработчик SelectedIndexChanged, как только вы обновили текст метки и назвали параметр управления DataBind автоматически получите новое значение.

Оцените статью
TechArks.Ru
Добавить комментарий