实现在datagrid里任意位置插入一行

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值