轉貼]GridView 多筆編輯批次存檔
http://www.dotblogs.com.tw/jeff377/archive/2008/03/17/1762.aspx
GridView 多筆編輯批次存檔GridView 預設的編輯儲存動作都是單筆的,若希望能 GridView 多筆編輯,按個鈕再進行批次儲存的動作,實作上相當簡單,只要四行程式碼就可以達成了,現在來看一下實作的步驟。
1.先將欲編輯的欄位轉成 TemplateField。
2.在 ItemTemplate 中置入可編輯的控制項,並繫結欄位。也可以 aspx 程式碼中直接把原來的 EditTemplate 直接改為 ItemTemplate。
3.按鈕後執行 GridView 批次異動的動作。
設計階段的畫面及 aspx 程式碼如下所示
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>未命名頁面</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btnBatchUpdate" runat="server" Text="批次存檔" /><br />
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="ProductID"
DataSourceID="SqlDataSource1" EmptyDataText="沒有資料錄可顯示。">
<Columns>
<asp:BoundField DataField="ProductID" HeaderText="ProductID" ReadOnly="True" SortExpression="ProductID" />
<asp:BoundField DataField="ProductName" HeaderText="ProductName" SortExpression="ProductName" />
<asp:TemplateField HeaderText="UnitPrice" SortExpression="UnitPrice">
<ItemTemplate>
<asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("UnitPrice") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="UnitsInStock" SortExpression="UnitsInStock">
<ItemTemplate>
<asp:TextBox ID="TextBox2" runat="server" Text='<%# Bind("UnitsInStock") %>'></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Discontinued" SortExpression="Discontinued">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" Checked='<%# Bind("Discontinued") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:NorthwindConnectionString1 %>"
ProviderName="<%$ ConnectionStrings:NorthwindConnectionString1.ProviderName %>"
SelectCommand="SELECT [ProductID], [ProductName], [UnitPrice], [UnitsInStock], [Discontinued] FROM [Products]"
UpdateCommand="UPDATE [Products] SET [UnitPrice] = @UnitPrice, [UnitsInStock] = @UnitsInStock, [Discontinued] = @Discontinued WHERE [ProductID] = @ProductID">
<UpdateParameters>
<asp:Parameter Name="ProductName" Type="String" />
<asp:Parameter Name="UnitPrice" Type="Decimal" />
<asp:Parameter Name="UnitsInStock" Type="Int16" />
<asp:Parameter Name="Discontinued" Type="Boolean" />
<asp:Parameter Name="ProductID" Type="Int32" />
</UpdateParameters>
</asp:SqlDataSource>
</div>
</form>
</body>
</html>
再來就是在按下按鈕時撰寫 GridView 批次儲存的程式碼
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub btnBatchUpdate_Click() Sub btnBatchUpdate_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBatchUpdate.Click
Dim N1 As Integer
For N1 = 0 To GridView1.Rows.Count - 1
'逐筆異動資料庫
GridView1.UpdateRow(N1, False)
Next
End Sub
End Class