ASP.NET(99):如何在GridView中一次性批量更新多行数据
假定有一个Product表,字段有(Id,Name,Quantity,...)我们要一次批量更新Quantity的值
首先在Gridview中,Quantity列以TemplateField显示,其他的列属性设为只读,把显示格式设为TextBox。
<asp:TemplateField HeaderText="Quantity"> <itemtemplate> <asp:TextBox ID="editQuantity" runat="server" CssClass="GridEditingRow" Width="24px" MaxLength="2" Text='<%#Eval("Quantity")%>' /> </itemtemplate> </asp:TemplateField>
在GridView下面添加一个Button控件,定义onclick方法为updateButton_Click
最后updateButton_Click代码为:
protected void updateButton_Click(object sender, EventArgs e) { int rowsCount = grid.Rows.Count; GridViewRow gridRow; TextBox quantityTextBox; string productId; int quantity; bool success = true; // 遍历GridView中的每一行 for (int i = 0; i < rowsCount; i++) { // 获行当前行 gridRow = grid.Rows[i]; // 通过DATAKEYS来取行没显示出来的ID号 Id = grid.DataKeys[i].Value.ToString(); // quantityTextBox = (TextBox)gridRow.FindControl("editQuantity"); // 转换为整形,如果输入的是非法字符Int32.TryParse返回FALSE if (Int32.TryParse(quantityTextBox.Text, out quantity)) { // 调用业务层的方法更新数据 success = success && BLL.UpdateItem(Id, quantity); } else { // 更新失败 success = false; } // 显示信息 statusLabel.Text = success ? "<br />更新成功!<br />" : "<br />更新失败!<br />"; } // 重新绑定GridVIEW PopulateGridView(); }
posted on 2007-07-11 16:09 springsnow 阅读(1403) 评论(1) 编辑 收藏 举报