ASP GridView在编辑模式下的所有行

时间:2011-12-09 11:12:52

标签: asp.net gridview

在我的ASP.NET页面中,我使用GridView查看数据(项目及其价格)。目前,用户可以逐行编辑网格中的数据(价格)。 (点击 - >“编辑”链接,更改值然后“更新”)。这是ROW by ROW。是否可以在编辑模式下打开所有行。使用单个按钮(例如提交)一次更新所有数据?

3 个答案:

答案 0 :(得分:5)

如果您不需要只读模式,那么您可以在ItemTEmplate部分放置输入框(文本框,下拉列表等)并将它们与现有数据绑定。

接下来,在GridView的上方/下方放置一个提交按钮并处理按钮Click事件并循环遍历GridView项目数据并保存所有数据库。

如果需要,我会发布代码块。谢谢你的时间。

答案 1 :(得分:0)

通过使用listview而不是gridview,您可以更好地控制自己。

我的最佳做法是使用listview和自定义Web用户控件来解决此类问题。

如果您使用您的用户控件填充listview,您将轻松管理您的保存方法,只需迭代listview项目,找到控件并为每个项目调用Save()方法。

答案 2 :(得分:0)

我知道这个问题已经得到解答但是这里是通过GridView循环获取数据并将其存储在数据库中的代码:

使用库:

  • 使用System.Data;
  • 使用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:对不起我的英语不好...这不是我的自然语言。