Vb.net菜鸟问几个简单的问题

huahaiqq 2008-03-14 10:03:06
第一个问题:
俺的datagridview的datasource是与dataset.table(0)绑定的,俺想实现增删改保存四个按钮来对datagridview操作。应该是通过操作datatable来实现吧,
增加行:dataset.Tables(0).Rows.Add(row)
修改行:直接修改就好
删除行:dataset.Tables(0).Rows(intRow).Delete()
dataset.Tables(0).AcceptChanges()

Private Sub DataGridview1_CellMouseUp(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles Grid1.CellMouseUp
intRow = e.RowIndex
End Sub

无论你是增删改都好,最后只要通过一个保存按钮来把所做的改动全部提交给数据库。
保存按钮:Dim scb As OleDbCommandBuilder = New OleDbCommandBuilder(datapter)
datapter.Update(dataset, table(0))
datapter.AcceptChanges()

现在的问题就是删除的行不能更新给数据库啊!重新打开还是没删除到!请各位老鸟帮帮忙啊~俺不想用sql命令啊~俺想直接操作datatable。或者各位有更好的方案不妨介绍一下啊!


第二个问题:哪位老大有较好的treeview绑定数据库代码?甭从csdn粘贴过来了,俺把整个论坛都翻遍了,都不实用。

第三个问题:哪位老大会做数据菜单? Contextmenu通过数据库分几个层次读取出来,呵呵~


唉~老是问问题,没分了,但俺对你们的感激之情不是用分可以衡量的,先谢谢各位了!!!
...全文
234 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
huahaiqq 2008-03-22
  • 打赏
  • 举报
回复
没得到想要的答案。。。但仍然很感谢热心回答俺的各位大大!分还是给你们吧
希望各位大大继续支持俺,谢谢!!!
kingsunmax 2008-03-18
  • 打赏
  • 举报
回复
以下VB.NET CODE
第一个问题:
删除换成如下试一下
试一下 Me.BindingContext(Me.DataGridView1.DataSource, Me.DataGridView1.DataMember).RemoveAt(intRow)

Update完后不用 datapter.AcceptChanges()

Dim scb As OleDbCommandBuilder = New OleDbCommandBuilder(datapter)
datapter.Update(dataset, table(0))

第二个问题和第三个问题:感觉你是在问无限的大树怎么做吧呵~~(自已新取的名字)二个原理都是一样.自已搜索无限树形就可以解决这二个问题了.

headsonlkc 2008-03-18
  • 打赏
  • 举报
回复
看来不太容易,呵呵,但帮您顶下吧
huahaiqq 2008-03-16
  • 打赏
  • 举报
回复
非常感谢楼上的老大!!!俺还要等等,等所有的问题都解决。。。
duping9626 2008-03-14
  • 打赏
  • 举报
回复
纠正一下打字错误
先回答你第一个问题:
删除行:dataset.Tables(0).Rows(intRow).Delete()
dataset.Tables(0).AcceptChanges() //将这行去掉可以删除了,因为这里提交了就不会去数据库删除了

其它两个问题要写代码,没有VS不好写呀
duping9626 2008-03-14
  • 打赏
  • 举报
回复
先回答你第一个问题:
删除行:dataset.Tables(0).Rows(intRow).Delete()
dataset.Tables(0).AcceptChanges() //将这行去掉可会删除了,因为这里提交了就会去数据库删除了

其它两个问题要写代码,没有VS不好写呀
wuhongyao3 2008-03-14
  • 打赏
  • 举报
回复
貌似 第一个问题 不错啊。。

楼主试试 单独做个按钮 ,看看可以删除不
herol 2008-03-14
  • 打赏
  • 举报
回复
几个问题都不简单啊,回答起来很累啊。友情支持一下吧
duping9626 2008-03-14
  • 打赏
  • 举报
回复
我再回答第三个问题吧(只是简单示例)

Friend WithEvents ContextMenu1 As New System.Windows.Forms.ContextMenu

'加载菜单
Private Sub LoadMenuItem()

'//构建一个简单的层次表结构,菜单按此结构加载结构如下:
'AA
' AA1
' AA2
'BB
'(如结构层次不固定,则自已用递归加去加载,此处只是简单示例)
Dim dt As New DataTable
dt.Columns.Add("fldParent", GetType(Integer))
dt.Columns.Add("fldId", GetType(Integer))
dt.Columns.Add("fldmenuText", GetType(String))

dt.Rows.Add(New Object() {DBNull.Value, 1, "AA"})
dt.Rows.Add(New Object() {DBNull.Value, 2, "BB"})
dt.Rows.Add(New Object() {1, 3, "AA1"})
dt.Rows.Add(New Object() {1, 4, "AA2"})

Dim mi1 As MenuItem
Dim mi2 As MenuItem

For Each dr As DataRow In dt.Select("fldParent IS NULL")
'第一层的菜单
mi1 = New MenuItem(dr("fldmenuText"))
Me.ContextMenu1.MenuItems.Add(mi1)
For Each row As DataRow In dt.Select("fldParent=" & dr("fldId"))
'第二的菜单
mi2 = New MenuItem(dr("fldmenuText"))
'//添加子菜单
mi1.MenuItems.Add(mi2)
Next

'如果菜单层次非固定,则递归添加
'SubAdd(dt, dr("fldId"), mi1)
Next
End Sub

'递归添加方法
Private Sub AddSubMenuItem(ByVal dt As DataTable, ByVal parentId As Integer, ByVal parentMenuItem As MenuItem)

Dim mi As MenuItem
For Each row As DataRow In dt.Select("fldParent=" & parentId)
'第二的菜单
mi = New MenuItem(row("fldmenuText"))
'//添加子菜单
parentMenuItem.MenuItems.Add(mi)
AddSubMenuItem(dt, row("fldId"), mi)
Next

End Sub

duping9626 2008-03-14
  • 打赏
  • 举报
回复
我再回答第三个问题吧(只是简单示例)

Friend WithEvents ContextMenu1 As New System.Windows.Forms.ContextMenu

'加载菜单
Private Sub LoadMenuItem()

'//构建一个简单的层次表结构,菜单按此结构加载结构如下:
'AA
' AA1
' AA2
'BB
Dim dt As New DataTable
dt.Columns.Add("fldParent", GetType(Integer))
dt.Columns.Add("fldId", GetType(Integer))
dt.Columns.Add("fldmenuText", GetType(String))

dt.Rows.Add(New Object() {DBNull.Value, 1, "AA"})
dt.Rows.Add(New Object() {DBNull.Value, 2, "BB"})
dt.Rows.Add(New Object() {1, 3, "AA1"})
dt.Rows.Add(New Object() {1, 4, "AA2"})

Dim mi1 As MenuItem
Dim mi2 As MenuItem

For Each dr As DataRow In dt.Select("fldParent IS NULL")
'第一层的菜单
mi1 = New MenuItem(dr("fldmenuText"))
Me.ContextMenu1.MenuItems.Add(mi1)
For Each row As DataRow In dt.Select("fldParent=" & dr("fldId"))
'第二的菜单
mi2 = New MenuItem(dr("fldmenuText"))
'//添加子菜单
mi1.MenuItems.Add(mi2)
Next

'如果菜单层次非固定,则递归添加
'SubAdd(dt, dr("fldId"), mi1)
Next
End Sub

'递归添加方法
Private Sub AddSubMenuItem(ByVal dt As DataTable, ByVal parentId As Integer, ByVal parentMenuItem As MenuItem)

Dim mi As MenuItem
For Each row As DataRow In dt.Select("fldParent=" & parentId)
mi = New MenuItem(row("fldmenuText"))
parentMenuItem.MenuItems.Add(mi)
AddSubMenuItem(dt, row("fldId"), mi)
Next
End Sub
huahaiqq 2008-03-14
  • 打赏
  • 举报
回复
首先非常感谢楼上的各位老大!俺还来不及测试,等等在给分。要是分不够,俺把百度知道的700分全拿出来。俺回等待其它问题的解决的!望各位老大多多支持阿~感激不尽!
yudi010 2008-03-14
  • 打赏
  • 举报
回复
回答你第二个问题吧
我也是刚做的
Me.TreeView1.BeginUpdate()
node1 = New TreeNode()
node1.Tag = dt1.Rows(i)("SHIDOHYO_KBN").ToString()
node1.Text = dt1.Rows(i)("SHIDOHYO_KBN_NM").ToString()
strnum = dt1.Rows(i)("SHIDO_NO").ToString()
strkuben = dt1.Rows(i)("SHIDOHYO_KBN").ToString()
Me.TreeView1.Nodes.Add(node1)
'dt2 = New DataTable
If Second(strnum, strkuben, dt2) = True Then
If dt2.Rows.Count <> 0 Then
For j = 0 To dt2.Rows.Count - 1
node2 = New TreeNode()
node2.Tag = dt2.Rows(j)(0).ToString()
node2.Text = dt2.Rows(j)(1).ToString()
Me.TreeView1.Nodes(i).Nodes.Add(node2)
Next
Else

End If
End If

Me.TreeView1.EndUpdate()

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧