在我的ASP.NET页面中,我使用GridView查看数据(项目及其价格)。目前,用户可以逐行编辑网格中的数据(价格)。 (点击 - >“编辑”链接,更改值然后“更新”)。这是ROW by ROW。是否可以在编辑模式下打开所有行。使用单个按钮(例如提交)一次更新所有数据?
答案 0 :(得分:5)
如果您不需要只读模式,那么您可以在ItemTEmplate
部分放置输入框(文本框,下拉列表等)并将它们与现有数据绑定。
接下来,在GridView的上方/下方放置一个提交按钮并处理按钮Click
事件并循环遍历GridView
项目数据并保存所有数据库。
如果需要,我会发布代码块。谢谢你的时间。
答案 1 :(得分:0)
通过使用listview而不是gridview,您可以更好地控制自己。
我的最佳做法是使用listview和自定义Web用户控件来解决此类问题。
如果您使用您的用户控件填充listview,您将轻松管理您的保存方法,只需迭代listview项目,找到控件并为每个项目调用Save()方法。
答案 2 :(得分:0)
我知道这个问题已经得到解答但是这里是通过GridView循环获取数据并将其存储在数据库中的代码:
使用库:
代码背后:
// 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:对不起我的英语不好...这不是我的自然语言。