`
hecal
  • 浏览: 79634 次
社区版块
存档分类
最新评论

实现在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

分享到:
评论

相关推荐

    WPF DataGrid 行拖拽

    然而,对于行的拖放操作,WPF DataGrid并没有内置的支持,因此开发者需要编写自定义代码来实现这一功能。本文将深入探讨如何在WPF DataGrid中实现行的拖拽功能。 首先,我们需要理解WPF DataGrid的基础结构。...

    Flex DataGrid 插入子组件

    以下是一个简单的例子,展示了如何在DataGrid的单元格中插入一个Button: ```actionscript // 创建自定义ItemRenderer public class ButtonRenderer extends MXItemRenderer { [Embed(source="assets/DeleteButton...

    datagrid-detailview 将+号放在任意列的后面

    - **性能优化**:如果数据集很大,避免一次性加载所有详细信息,而是采用懒加载策略,只在用户展开一行时加载其详细内容。 - **用户体验**:提供清晰的视觉反馈,比如改变鼠标悬停在图标上的样式,以及在展开和收缩...

    jquery Easyui Datagrid实现批量操作(编辑,删除,添加)

    通过代码的修改,可以实现同时追加多行、在任意位置追加行、任意位置编辑行以及保存前统一验证的功能。这使得原本受限的行内编辑功能变得更加灵活和强大。 6. **事件处理**: - 对于编辑、删除、添加事件的处理,...

    delphi 开发经验技巧宝典源码

    0089 实现直接插入法排序 61 第4章 函数应用 63 4.1 字符串处理函数 64 0090 使用Uppercase函数将小写字母转换为大写字母 64 0091 使用Lowercase函数将大写字母转换为小写字母 64 0092 使用Copy函数获取...

    delphi 开发经验技巧宝典源码06

    0089 实现直接插入法排序 61 第4章 函数应用 63 4.1 字符串处理函数 64 0090 使用Uppercase函数将小写字母转换为大写字母 64 0091 使用Lowercase函数将大写字母转换为小写字母 64 0092 使用Copy函数获取...

    net学习笔记及其他代码应用

    然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。通常的动态联编将生效。引用可以转换到接口类型或从接口类型转换,instanceof 运算符可以用来决定...

    toad for oracle 教程 红宝书

    - 将下方子窗口最小化为一行图标,每个图标代表一个Tab页。 - 调整数据库连接工具栏、功能工具栏的位置至左侧。 - 将编辑器工具栏调整为一行显示。 - 在编辑器工具栏上自定义显示的按钮,例如只保留最常用的几个...

    Visual C++程序开发范例宝典(光盘) 第四部分

    实例273 使用内连接选择一个表与另一个表中行相关的所有行 9.14 外连接查询 实例274 LEFT OUTER JOIN查询 实例275 RIGHT OUTER JOIN查询 实例276 使用外连接进行多表联合查询 9.15 利用IN进行查询 实例277 ...

    Visual C++程序开发范例宝典(光盘) 第八部分

    实例273 使用内连接选择一个表与另一个表中行相关的所有行 9.14 外连接查询 实例274 LEFT OUTER JOIN查询 实例275 RIGHT OUTER JOIN查询 实例276 使用外连接进行多表联合查询 9.15 利用IN进行查询 实例277 ...

    Visual C++程序开发范例宝典(PDF扫描版).part3

     cc实例102 获取鼠标任意位置的颜色值   cc实例103 提取图片中的对象   cc实例104 手写数字识别   3.8 图像字体  cc 实例105 旋转的文字   cc实例106 当前系统字体列表   cc实例107 空心文字  ...

    Visual C++程序开发范例宝典(PDF扫描版).part2

     cc实例102 获取鼠标任意位置的颜色值   cc实例103 提取图片中的对象   cc实例104 手写数字识别   3.8 图像字体  cc 实例105 旋转的文字   cc实例106 当前系统字体列表   cc实例107 空心文字  ...

    Visual C++ 程序开发范例宝典 源码 光盘 part2

    cc实例102 获取鼠标任意位置的颜色值 cc实例103 提取图片中的对象 cc实例104 手写数字识别 3.8 图像字体 cc 实例105 旋转的文字 cc实例106 当前系统字体列表 cc实例107 空心文字 cc实例108 如何在...

Global site tag (gtag.js) - Google Analytics