Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Значение из ячейки GridView передать в хранимую процедуру. / 8 сообщений из 8, страница 1 из 1
18.06.2014, 13:38
    #38672923
El Khan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение из ячейки GridView передать в хранимую процедуру.
Здравствуйте. Прощу помочь в разработке маленькой задачки.

Visual Studio, среда ASP.NET язык C#.

Есть SqlDataSource и GridView. GridView состоит из нескольких колонок. В последней колонки GridView добавил кнопку Run.

Нужно чтобы при нажатии этой кнопки значение поля ID этой строки передать в существующую хранимую процедуру с параметром @id.

Вызов хранимой процедуры с помощью гугла нашел

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
protected void Button1_Click(object sender, EventArgs e)
        {
            SqlConnection MyCon = new SqlConnection("Data Source = localhost; Initial Catalog = TestDB; Integrated Security = SSPI");
            System.Data.SqlClient.SqlCommand MyCmd = new System.Data.SqlClient.SqlCommand();
            MyCon.Open();

            MyCmd.Connection = MyCon;
            MyCmd.CommandType = CommandType.StoredProcedure;
            Console.WriteLine("Is sent query");
            MyCmd.CommandText = "usp_test";
            MyCmd.ExecuteNonQuery();

            MyCon.Close();
            MyCon.Dispose();
        }



а вот как передать İD в @id нет.

Сам занимался только T-SQL а ASP.NET и C# для меня новое.
...
Рейтинг: 0 / 0
18.06.2014, 14:32
    #38673022
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение из ячейки GridView передать в хранимую процедуру.
El Khan,
.. можно использовать CommandField в гриде c SelectButton, например

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.commandfield(v=vs.110).aspx

.. соответственно в разметку грида добавить DataKeyNames="Id", а в обработке клика ваш Id передается как GridViewName.SelectedValue ...
...
Рейтинг: 0 / 0
18.06.2014, 15:14
    #38673093
El Khan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение из ячейки GridView передать в хранимую процедуру.
carrotik,

Спасибо, сделал как вы посоветовали но только не знаю как правильно поправить код

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
protected void Button1_Click(object sender, EventArgs e)
        {
            SqlConnection MyCon = new SqlConnection("Data Source = localhost; Initial Catalog = TestDB; Integrated Security = SSPI");
            System.Data.SqlClient.SqlCommand MyCmd = new System.Data.SqlClient.SqlCommand();
            MyCon.Open();

            MyCmd.Connection = MyCon;
            MyCmd.CommandType = CommandType.StoredProcedure;
            Console.WriteLine("Is sent query");
            MyCmd.CommandText = "usp_test";
            MyCmd.ExecuteNonQuery();

            MyCon.Close();
            MyCon.Dispose();
        }



, т.е. как в ХП usp_test передать этот ID.
...
Рейтинг: 0 / 0
18.06.2014, 15:20
    #38673103
El Khan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение из ячейки GridView передать в хранимую процедуру.
Вот сам GridView с DataKeyNames="ID"

Код: plaintext
1.
2.
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
        CellPadding="4" DataKeyNames="ID" DataSourceID="SqlDataSource2"
...
Рейтинг: 0 / 0
18.06.2014, 16:00
    #38673176
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение из ячейки GridView передать в хранимую процедуру.
El Khan,

.. примерно вот так
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
 protected void Button1_Click(object sender, EventArgs e)
       {
            SqlConnection MyCon = new SqlConnection("Data Source = localhost; Initial Catalog = TestDB; Integrated Security = SSPI");
            System.Data.SqlClient.SqlCommand MyCmd = new System.Data.SqlClient.SqlCommand();
            MyCon.Open();

            MyCmd.Connection = MyCon;
            MyCmd.CommandType = CommandType.StoredProcedure;
            Console.WriteLine("Is sent query");
            MyCmd.CommandText = "usp_test";
            MyCmd.Parameters.Add("@id", SqlDbType.VarChar).Value = GridView2.SelectedValue;
            MyCmd.ExecuteNonQuery();

            MyCon.Close();
            MyCon.Dispose();
        }
...
Рейтинг: 0 / 0
18.06.2014, 16:32
    #38673245
El Khan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение из ячейки GridView передать в хранимую процедуру.
carrotik,

Код: c#
1.
MyCmd.Parameters.Add("@id", SqlDbType.VarChar).Value = GridView2.SelectedValue;



а как программа поймет какое именно значение брать?

т.е. это было объявление
Код: plaintext
1.
2.
<asp:GridView ID="GridView2" runat="server" AutoGenerateColumns="False" 
        CellPadding="4" DataKeyNames="ID" DataSourceID="SqlDataSource2" 



Код: c#
1.
GridView2.SelectedValue

берет это значение ?

Когда я запускаю программу, ругается что Procedure or function 'usp_test' expects parameter '@id', which was not supplied.
...
Рейтинг: 0 / 0
18.06.2014, 17:19
    #38673348
carrotik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение из ячейки GridView передать в хранимую процедуру.
El Khan,
... в моем примере (есть еще другие варианты, напр. через RowCommand и т.д.) подразумевалось что у вас в разметке грида вот примерно такое CommandField

Код: c#
1.
2.
3.
4.
5.
6.
<Columns>
<asp:CommandField ButtonType="Image" SelectImageUrl="../Img/select.png" ShowSelectButton="True">
</asp:CommandField>
<asp:BoundField DataField="ID" ReadOnly="true" Visible="false" />
.....
</Columns>



тогда у вас при клике на кнопку Select (в моем случае это картинка) обновляется значение GridView2.SelectedValue (т.е. ваш Id) и происходит событие SelectedIndexChanged, в которое и нужно вставить ваш код обращения к БД ... вот еще тут посмотрите

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.commandfield.showselectbutton(v=vs.110).aspx

.. или смотрите методы RowCommand ...
...
Рейтинг: 0 / 0
19.06.2014, 10:07
    #38673880
El Khan
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Значение из ячейки GridView передать в хранимую процедуру.
carrotik,

Большое Вам спасибо! Исправил некоторые недочеты, теперь все превосходно работает.
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Значение из ячейки GridView передать в хранимую процедуру. / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]