HTML頁面的樣子,
<asp:GridView ID="Grid1" runat="server" AutoGenerateColumns="False" GridLines="None">
<Columns>
<asp:TemplateField HeaderText="ID">
<ItemTemplate>
<asp:Label ID="lbl1" runat="server" Text='<%#Bind("ID") %>' CssClass="rowHeader"></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txt1" runat="server" Text='<%#Bind("ID") %>'></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Description">
<ItemTemplate>
<asp:TextBox ID="txt" runat="server" Text='<%#Bind("Description") %>'></asp:TextBox>
</ItemTemplate>
<FooterTemplate>
<asp:TextBox ID="txt2" runat="server" Text='<%#Bind("Description") %>'></asp:TextBox>
</FooterTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Comments">
<ItemTemplate>
<asp:Label ID="Comments" runat="server" Text='<%#Bind("Comments") %>'></asp:Label>
</ItemTemplate>
<FooterTemplate>
<asp:DropDownList ID="Drop1" runat="server">
<asp:ListItem>v1</asp:ListItem>
<asp:ListItem>v2</asp:ListItem>
</asp:DropDownList>
</FooterTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button ID="btnAdd" runat="server" Text="Add" />
<asp:Button ID="btnSave" runat="server" Text="Save" />
在頁面加載,
康恩=新OleDb.OleDbConnection(「供應商= Microsoft.Jet.OLEDB.4.0;數據源= d:\ GDD_Work \ Employee.mdb 「)
If Not Page.IsPostBack Then
ViewState("intCount") = 0
Session("blnFlag") = False
Dim Cmd As New OleDb.OleDbDataAdapter("Select * from Emp", conn)
Cmd.Fill(ds, "Employee")
Grid1.DataSource = ds.Tables("Employee")
Grid1.DataBind()
Session("intOldCount") = ds.Tables("Employee").Rows.Count
Session("tempTable") = ds.Tables("Employee")
添加按鈕點擊,
如果會議(」 blnFlag「)= false,那麼 會議( 「blnFlag」)= TRUE 否則 getFooter() 結束如果
Grid1.FooterRow.Visible = True
上保存按鈕點擊,
昏暗intOldCount作爲整數 昏暗intNewCount作爲整數 昏暗DT作爲新的DataTable Dim strQuery As String intOldCount = CType(Session(「intOldCount」),Integer) If Session(「blnFlag」)= True Then
getFooter()
dt = CType(Session("tempTable"), DataTable)
intNewCount = dt.Rows.Count
If intOldCount = intNewCount Then
Dim tx1 As TextBox
Dim tx2 As TextBox
Dim drp As DropDownList
tx1 = CType(Grid1.FooterRow.FindControl("txt1"), TextBox)
tx2 = CType(Grid1.FooterRow.FindControl("txt2"), TextBox)
drp = CType(Grid1.FooterRow.FindControl("Drop1"), DropDownList)
strQuery = "INSERT INTO Emp (ID,Description,Comments) values ('" + tx1.Text + "','" + tx2.Text + "','" + drp.SelectedValue + "')"
Dim Cmd As New OleDb.OleDbCommand(strQuery, conn)
conn.Open()
Cmd.ExecuteNonQuery()
conn.Close()
Else
For i = intOldCount To intNewCount - 1
Dim strId As String
Dim strDesc As String
Dim strComm As String
strId = dt.Rows(i)(0).ToString()
strDesc = dt.Rows(i)(1).ToString()
strComm = dt.Rows(i)(2).ToString()
strQuery = "INSERT INTO Emp (ID,Description,Comments) values ('" + strId + "','" + strDesc + "','" + strComm + "')"
Dim Cmd As New OleDb.OleDbCommand(strQuery, conn)
conn.Open()
Cmd.ExecuteNonQuery()
conn.Close()
Next
End If
For i = 0 To intOldCount - 1
Dim strId As String
Dim strDesc As String
strId = dt.Rows(i)(0).ToString()
strDesc = dt.Rows(i)(1).ToString()
strQuery = "update Emp set Description = '" + strDesc + "' where ID = '" + strId + "'"
Dim Cmd1 As New OleDb.OleDbCommand(strQuery, conn)
conn.Open()
Cmd1.ExecuteNonQuery()
conn.Close()
Next
ds = New DataSet()
Dim CmdData As New OleDb.OleDbDataAdapter("Select * from Emp", conn)
CmdData.Fill(ds, "Employee")
Grid1.DataSource = ds.Tables("Employee").DefaultView
Grid1.DataBind()
Session("blnFlag") = False
Else
dt = CType(Session("tempTable"), DataTable)
i = 0
For Each rows As GridViewRow In Grid1.Rows
Dim txt As TextBox
txt = CType(rows.FindControl("txt"), TextBox)
dt.Rows(i)(1) = txt.Text
i = i + 1
Next
Session("tempTable") = dt
For i = 0 To intOldCount - 1
Dim strId As String
Dim strDesc As String
strId = dt.Rows(i)(0).ToString()
strDesc = dt.Rows(i)(1).ToString()
strQuery = "update Emp set Description = '" + strDesc + "' where ID = '" + strId + "'"
Dim Cmd1 As New OleDb.OleDbCommand(strQuery, conn)
conn.Open()
Cmd1.ExecuteNonQuery()
conn.Close()
Next
Grid1.DataSource = dt.DefaultView
Grid1.DataBind()
End If
使用一個函數等,
公共功能getFooter() 昏暗TX1作爲文本框 昏暗TX2作爲文本框 昏暗DRP IM作爲DropDownList的 TX1 = CTYPE(Grid1.FooterRow.FindControl( 「TXT1」), TextBox) tx2 = CType(Grid1.FooterRow.FindControl(「txt2」),TextBox) drp = CType(Grid1.FooterRow。的FindControl(「Drop1」),DropDownList的)
Dim dr As DataRow
Dim dt As DataTable
dt = CType(Session("tempTable"), DataTable)
dr = dt.NewRow()
dr("ID") = tx1.Text
dr("Description") = tx2.Text
dr("Comments") = drp.SelectedValue
dt.Rows.Add(dr)
i = 0
For Each rows As GridViewRow In Grid1.Rows
Dim txt As TextBox
txt = CType(rows.FindControl("txt"), TextBox)
dt.Rows(i)(1) = txt.Text
i = i + 1
Next
Grid1.DataSource = dt.DefaultView
Grid1.DataBind()
Session("tempTable") = dt
End Function
喜的Sergiu達米安 我明白你說...但我不知道如何來以雙向方式獲取數據... 請問您可以舉個例子嗎? – sona 2008-12-01 10:11:01
您可以將數據綁定到GridView,您可以一次編輯一條記錄。基本上,在編輯每行之後,必須先保存才能編輯另一行。 一個很好的起點:http://msdn.microsoft.com/en-us/magazine/cc163933.aspx – 2008-12-02 13:54:39