ASP.NET Удалить несколько строк GridView с помощью шаблона флажка - PullRequest
1 голос
/ 18 ноября 2011

В моем приложении есть таблица GirdView. У меня есть кнопка ссылки Удалить и флажок в моем первом столбце. Ниже приведены снимки:

enter image description hereenter image description here

Я могу вручную удалить каждую строку, нажав кнопку Удалить в каждой строке.

Однако я бы хотел включить флажок для удаления нескольких строк.

Ниже приведен код моей ссылки Удалить :

LinkButton lnk = (LinkButton)sender; 
        string stid = lnk.CommandArgument.ToString();
        SqlConnection conn = new SqlConnection("Data Source=DATASOURCE");
        string sql = string.Format("DELETE FROM [UserDB] where Employee like '%{0}%'",stid);
        SqlCommand cmd = new SqlCommand(sql,conn);
        conn.Open();
        cmd.ExecuteNonQuery();

Ниже приведен мой код для текущей Кнопка «Удалить проверено» :

bool atLeastOneRowDeleted = false;
        foreach (GridViewRow row in GridView1.Rows)
        {
            // Access the CheckBox
            CheckBox cb = (CheckBox)row.FindControl("UserSelection");
            if (cb != null && cb.Checked)
            {
                atLeastOneRowDeleted = true;
                // How do I get the value from my Employee column?
                string userID = ???;


           SqlConnection conn = new SqlConnection("Data Source=DATASOURCE");
           string sql = string.Format("DELETE FROM [UserDB] where Employee like '%{0}%'",userID);
           SqlCommand cmd = new SqlCommand(sql,conn);
           conn.Open();
           cmd.ExecuteNonQuery();
            }
        }

Я хотел бы знать, как мне нужно ввести grep userID, который является ключом Employee в GridView, чтобы INSERT ввести его в мой оператор удаления SQL?

Ответы [ 4 ]

1 голос
/ 18 ноября 2011

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

1 голос
/ 18 ноября 2011

Я думаю, что вы хотите

bool atLeastOneRowDeleted = false;
    foreach (GridViewRow row in GridView1.Rows)
    {
        // Access the CheckBox
        CheckBox cb = (CheckBox)row.FindControl("UserSelection");
        if (cb != null && cb.Checked)
        {
            atLeastOneRowDeleted = true;
            //assuming you have the ID column after the controls
            string CusId = (row.Cells[3].Text);


       SqlConnection conn = new SqlConnection("Data Source=DATASOURCE");
       string sql = string.Format("DELETE FROM [UserDB] where Employee like '%{0}%'",userID);
       SqlCommand cmd = new SqlCommand(sql,conn);
       conn.Open();
       cmd.ExecuteNonQuery();
        }
    }
0 голосов
/ 20 августа 2015

На этот вопрос уже дан ответ, но вот статья, которая показывает, какой весь поток использует базу данных, Gridview, Business Logic и DAL.

Окончательный просмотр выглядит примерно так

enter image description here

Вы можете найти весь исходный код здесь

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

Использование 'row.Cells [3] .Text' для извлечения значений столбцов - плохой способ. Если он добавит еще один столбец между ними, индекс изменится. Вместо этого используйте dataKeys для ссылки на значения вашего столбца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...