1. 在datagrid里创建4个BoundColumn和一个LinkButton。
<asp:DataGrid id="DataGrid1" style="Z-INDEX: 110; LEFT: 16px; POSITION: absolute; TOP: 168px"
Visible="True" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundColumn DataField="ID" HeaderText="ID"></asp:BoundColumn>
<asp:BoundColumn DataField="NUM1" HeaderText="NUM1"></asp:BoundColumn>
<asp:BoundColumn DataField="NUM2" HeaderText="NUM2"></asp:BoundColumn>
<asp:BoundColumn DataField="NUM3" HeaderText="NUM3"></asp:BoundColumn>
<asp:EditCommandColumn ButtonType="LinkButton" UpdateText="Update" HeaderText="Edit!" CancelText="Cancel"
EditText="Edit"></asp:EditCommandColumn>
</Columns>
</asp:DataGrid>
2.通过OracleDataAdapter的Fill函数获得数据,并自动关闭连接
Dim OraclDataSet As DataSet
Dim OraclDataAd As OracleDataAdapter
Dim OrclCnn As OracleConnection
Try
OrclCnn = New OracleConnection
OrclCnn.ConnectionString = "Data Source=edc81;User Id=test;Password=test"
OraclDataSet = New DataSet
OraclDataAd = New OracleDataAdapter("select ID,NUM1,NUM2,NUM3 from test1", OrclCnn)
OraclDataAd.Fill(OraclDataSet)
Session("RecordSet") = OraclDataSet
Session("SelectedIndex") = OraclDataSet.Tables(0).Rows.Count
DataGrid1.DataSource = OraclDataSet.Tables(0).DefaultView
DataGrid1.DataBind()
Catch ex As Exception
Throw ex
Finally
End Try
3. datagrid的Edit事件
Private Sub DataGrid1_EditCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.EditCommand
DataGrid1.EditItemIndex = e.Item.ItemIndex
Session("SelectedIndex") = e.Item.ItemIndex
BindDataGrid()
End Sub
4. datagrid的Cancel事件
Private Sub DataGrid1_CancelCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.CancelCommand
DataGrid1.EditItemIndex = -1
BindDataGrid()
End Sub
5. datagrid的Update事件
Private Sub DataGrid1_UpdateCommand(ByVal source As Object, ByVal e As System.Web.UI.WebControls.DataGridCommandEventArgs) Handles DataGrid1.UpdateCommand
''略
End Sub
6. 点button在datagrid的任意位置插入一行
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim OrclDataTable As DataTable
Dim TmpOrclDataTable As DataTable
Dim TmpOrclDataRow As DataRow
Dim OrclDataRow As DataRow
Dim OrclDataColumn As DataColumn
Dim isInserted As Boolean
Dim OraclDataSet As DataSet
Dim intSelectedIndex As Integer
Dim DataGrid1 As DataGrid
Try
isInserted = False
OraclDataSet = Session("RecordSet")
intSelectedIndex = Session("SelectedIndex")
If OraclDataSet Is Nothing Then
Exit Sub
End If
OrclDataTable = New DataTable
OrclDataColumn = New DataColumn("ID", GetType(Int32))
OrclDataTable.Columns.Add(OrclDataColumn)
OrclDataColumn = New DataColumn("NUM1", GetType(Int32))
OrclDataTable.Columns.Add(OrclDataColumn)
OrclDataColumn = New DataColumn("NUM2", GetType(Int32))
OrclDataTable.Columns.Add(OrclDataColumn)
OrclDataColumn = New DataColumn("NUM3", GetType(Int32))
OrclDataTable.Columns.Add(OrclDataColumn)
TmpOrclDataTable = OraclDataSet.Tables(0)
OrclDataRow = OrclDataTable.NewRow()
OrclDataRow("ID") = 5
OrclDataRow("NUM1") = 1
OrclDataRow("NUM2") = 2
OrclDataRow("NUM3") = 3
If intSelectedIndex < TmpOrclDataTable.Rows.Count Then
Dim i As Integer
For i = 0 To intSelectedIndex - 1
isInserted = True
Dim inOrclDataRow As DataRow
inOrclDataRow = OrclDataTable.NewRow()
inOrclDataRow = TmpOrclDataTable.Rows(i)
OrclDataTable.ImportRow(inOrclDataRow)
Next
If isInserted = True Then
OrclDataTable.NewRow()
End If
OrclDataTable.Rows.Add(OrclDataRow)
For i = intSelectedIndex To TmpOrclDataTable.Rows.Count - 1
Dim inOrclDataRow As DataRow
Dim intTmpOrclDataRow As DataRow
inOrclDataRow = OrclDataTable.NewRow()
intTmpOrclDataRow = TmpOrclDataTable.Rows(i)
OrclDataTable.ImportRow(intTmpOrclDataRow)
Next
Else
Dim i As Integer
For i = 0 To TmpOrclDataTable.Rows.Count - 1
Dim inOrclDataRow As DataRow
inOrclDataRow = OrclDataTable.NewRow()
inOrclDataRow = TmpOrclDataTable.Rows(i)
OrclDataTable.ImportRow(inOrclDataRow)
Next
OrclDataTable.NewRow()
OrclDataTable.Rows.Add(OrclDataRow)
End If
Dim NewOraclDataSet As DataSet
NewOraclDataSet = New DataSet
NewOraclDataSet.Tables.Add(OrclDataTable)
OraclDataSet.Dispose()
Session("RecordSet") = NewOraclDataSet
'DataGrid1 = MultiPage1.FindControl("DataGrid1")
DataGrid1.DataSource = NewOraclDataSet.Tables(0).DefaultView
DataGrid1.DataBind()
Catch ex As Exception
Throw ex
Finally
End Try
End Sub