Nil619 Ответов: 1

В чем проблема в коде?... Gridcellselect не выполняет никаких действий


Я написал хранимую процедуру "HSNMasterView" для выбора значения из таблицы

Я написал функцию FillDataGridView заполните datagridview и вызовите эту функцию в SearchClick

Что я уже пробовал:

// dbo.HSNMasterView
ALTER PROCEDURE dbo.HSNMasterView
@HSNCode int AS SELECT * FROM inv_hsn WHERE  status = 1

//FillDataGridView
private void FillDataGridView()
        {
            try
            {
                if (sqlcon.State == ConnectionState.Closed)
                    sqlcon.Open();
                SqlDataAdapter sqlda = new SqlDataAdapter("HSNMasterView", sqlcon);
                sqlda.SelectCommand.CommandType = CommandType.StoredProcedure;            
sqlda.SelectCommand.Parameters.AddWithValue("@HSNCode",txt_HSNSearch.Text.Trim());
                DataTable dtbl = new DataTable();
                sqlda.Fill(dtbl);
                dgv_HSNMaster.DataSource = dtbl;
                dgv_HSNMaster.Columns[0].Visible = false;
                sqlcon.Close();
            }
            catch (Exception ex)
            { 
                MessageBox.Show(ex.Message);
            }
        }

//Search Code
private void dgv_HSNMaster_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                FillDataGridView();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message, "Error");
            }
        }

Karthik_Mahalingam

вы получаете какое-нибудь сообщение об ошибке?

1 Ответов

Рейтинг:
1

Suvendu Shekhar Giri

Все выглядит прекрасно за исключением следующих нескольких вещей-
1. Ваша хранимая процедура ожидает INT параметр где как вы проходите СТРОКА в качестве параметров.
2. Если вы еще не звонили в полицию. Page_Load или какое-то соответствующее событие, оно не будет загружено.
3. На самом деле нет никакого смысла привязывать gridview к dgv_HSNMaster_CellClick поскольку он никогда не будет вызван, если сетка не будет доступна для щелчка.
4. я подозреваю, что вы хотите вызвать привязку сетки по кнопке (Поиск или что-то еще), а не по щелчку ячейки сетки.

Предложения:
1.

sqlda.SelectCommand.Parameters.AddWithValue("@HSNCode",int.parse(txt_HSNSearch.Text.Trim()));

2. Создайте кнопку поиска(или используйте ее, если она у вас уже есть) и свяжите gridview в событии нажатия кнопки.

Пожалуйста, дайте мне знать, если мои предположения неверны и ваша проблема заключается в чем-то другом.

Надеюсь, это поможет :)


Karthik_Mahalingam

1. Ваша хранимая процедура ожидает параметр INT, где в качестве параметра вы передаете строку.

это не имеет значения, проблема заключается в том, является ли строковое значение числом или нет ?
проверка строки с помощью int.tryparse сделает свое дело.

Suvendu Shekhar Giri

О. Я вижу. Не использую АДО уже несколько лет. Спасибо за обучение!

Karthik_Mahalingam

добро пожаловать :)