ASP GridView Все строки в режиме редактирования - PullRequest
6 голосов
/ 09 декабря 2011

На своей странице ASP.NET я использую GridView для просмотра данных (элементы и их цены).В настоящее время пользователи могут редактировать данные (цены) в сетке построчно.(Нажмите -> «Изменить» ссылку, измените значения, затем «Обновить»).Это ряд за строкой.Можно ли открыть все строки в режиме редактирования и использовать одну кнопку (например, Отправить), чтобы обновить все данные один раз?

Ответы [ 3 ]

5 голосов
/ 09 декабря 2011

Если вам не нужен режим только для чтения, в этом случае вы можете поместить поля ввода (текстовое поле, выпадающий список и т. Д.) В раздел ItemTEmplate и связать их с существующими данными.

Затем, поместите кнопку отправки выше / ниже GridView и обработайте событие кнопки Click и выполните цикл по элементам GridView и сохраните всю базу данных.

Я отправлю кодовый блок, если вам нужно. Спасибо за ваше время.

0 голосов
/ 10 мая 2014

Я знаю, что на этот вопрос уже был дан ответ, но вот код для прохождения цикла через GridView для получения данных и их сохранения в базе данных:

Использование библиотек:

  • используя System.Data;
  • using System.Data.SqlClient;
  • с использованием System.Web.Configuration;
  • с использованием System.Data.Odbc;

Код сзади:

// this is a variable that have the Query or SQL Commands.
string DataBaseQuery = "UPDATE [table] SET [variable2] = @variable2, [variable3] = @variable3) WHERE [variable1] = @variable1";

//Click Event from a LinkButton.
protected void LinkButton1_Click(object sender, EventArgs e)
{
  //"ConnectionString" its the string connection for your DataBase (often get from the WebConfig File or a DataSource element.
  using (SqlConnection connection = new SqlConnection(ConnectionString))
  {
    //this is for open the database using the string connection.
    connection.Open(); 

    //this is the algorithm for going through the entire GridView.
    for (int i = 0; i < GridView1.Rows.Count; i++)
    {
      //"DataBaseQuery" it's a string variable that have the Query or SQL Commands.
      SqlCommand cmd = new SqlCommand(DataBaseQuery, conexion);

      //this case it's for obtain the text variable of the first column of the gridview (in my case it was the ID of the register).
      cmd.Parameters.AddWithValue("@variable1", ((Label)GridView1.Rows[i].Cells[0].FindControl("Label1")).Text.ToString());

      //this case it's for obtain the selected value of a DropDownList that were in the 14 th column)
      cmd.Parameters.AddWithValue("@variable2", ((DropDownList)GridView1.Rows[i].Cells[15].FindControl("DropDownlist2")).SelectedValue.ToString());

      //this command it's for obtain the text of a textbox that is in the 15 th column of the gridview.
      cmd.Parameters.AddWithValue("@variable3", ((TextBox)GridView1.Rows[i].Cells[16].FindControl("TextBox17")).Text.ToString());

      cmd.ExecuteNonQuery(); 
    }

    //after going through all the gridview you have to close the connection to the DataBase.
    connection.Close();
  }
}

Конечно, вы должны настроить код для вашего конкретного случая, но это очень легко,В этом коде у вас есть пример для получения значений для других объектов, таких как labes, textbox и dropdownlist в gridview.

Я много страдал, чтобы запустить этот код (я не очень хорошо программирую), но ярад помочь.

ПРИМЕЧАНИЕ. Для подсчета столбцов сетки необходимо начинать с нуля.ПРИМЕЧАНИЕ 2: Кстати, извините за мой плохой английский ... Это не мой родной язык.

0 голосов
/ 21 декабря 2011

И вы получите лучший контроль над этим, используя просмотр списка вместо gridview.

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

Если вы заполнили свой список с помощью пользовательского элемента управления, вы легко сможете управлять своим методом сохранения, просто нужно перебрать элементы списка, найти элемент управления и вызвать метод Save () для каждого элемента.

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