求教VB.NET数据库显示上一行下一行

ciquanmi6254 2017-06-21 08:58:37
vb.net连接数据库后,运行程序时如何让DataGridView1不显示数据库表的数据,当点击显示下一行按钮,DataGridView1就显示表的第一行数据,再点击下一行就显示下一行数据,DataGridView1只显示一行数据。上一行同理,求大神教。
...全文
836 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
X-i-n 2017-06-22
  • 打赏
  • 举报
回复
上面的还是太罗嗦了,不过做法并没有问题。刚才试了一下LINQ,一句话就可以把数据从datatable里抽出来。

        Dim dtSource As New DataTable
        With dtSource.Columns
            .Add("col1")
            .Add("col2")
            .Add("col3")
        End With
        dtSource.Rows.Add({"r1c1", "r1c2", "r1c3"})
        dtSource.Rows.Add({"r2c1", "r2c2", "r2c3"})
        dtSource.Rows.Add({"r3c1", "r3c2", "r3c3"})
        dtSource.Rows.Add({"r4c1", "r4c2", "r4c3"})

        '下面两句等效,Skip方法的参数,表示需要跳过多少条以后,然后在剩下的序列里,Take第1条。
        'DataGridView1.DataSource = dtSource.AsEnumerable.Skip(1).Take(1).CopyToDataTable()
        DataGridView1.DataSource =
            (From r In dtSource Select r).Skip(1).Take(1).CopyToDataTable()
X-i-n 2017-06-21
  • 打赏
  • 举报
回复
因为对LINQ不熟,所以没有介绍。我写了几个示例,可以作为参考
        Dim dtSource As New DataTable   'dtSource是需要绑定到datagridview的datatable,作为示例。
        With dtSource.Columns                  '建表结构,填数据
            .Add("col1")
            .Add("col2")
            .Add("col3")
        End With
        dtSource.Rows.Add({"r1c1", "r1c2", "r1c3"})
        dtSource.Rows.Add({"r2c1", "r2c2", "r2c3"})
        dtSource.Rows.Add({"r3c1", "r3c2", "r3c3"})
        dtSource.Rows.Add({"r4c1", "r4c2", "r4c3"})

        'DefaultView是datatable的默认视图,当需要同时展示同一张表的不同
        '内容时也可以自己定义几个DataView。
        '这个筛选示范的是 应用一个 col1 = "r3c1" 的筛选到DefaultView。
        '如果这儿有办法直接按行号筛选,就可以写在这
        'dtSource.DefaultView.RowFilter = "col1='r3c1'"

        '绑定视图到DataGridView
        'DataGridView1.DataSource = dtSource.DefaultView


        '如果没找到按行号筛选的办法,可以有两个办法
        '办法1,查询的时候,添加上行号(确定好排序规则)
        'SQL语句类似于 '

        'select *,
        'ROW_NUMBER() over (order by 排序字段 asc) as RowNo 
        'from devices

        '别的操作都和上面一样。
        'DefaultView.RowFilter = "RowNo = " & 记录行号的变量
        '然后绑定

        '方法2,正常查询,得到dtSource后,再增加一列,遍历每一行,把行号赋给这一列
        dtSource.Columns.Add("RowNo")
        Dim rowno As Integer = 0
        For Each dr As DataRow In dtSource.Rows
            rowno += 1
            dr("RowNo") = rowno
        Next
        dtSource.DefaultView.RowFilter = "RowNo=3"
        DataGridView1.DataSource = dtSource.DefaultView
ciquanmi6254 2017-06-21
  • 打赏
  • 举报
回复
dataview的filter属性来筛选的话应该怎么填,表的所有列都在。。
X-i-n 2017-06-21
  • 打赏
  • 举报
回复
用sqldataadapter查出数据填充到datatable1里。 然后,定义一个变量rowno作为行号,上一行/下一行 这两个按钮的点击事件里 定义一个临时 datatable2 dim datatable2 as datatable=datatable1.clone '复制表结构 datatable2.rows.add(datatable1.rows(rowno).itemarray) '复制rowno对应行的数据 datagridview1.datasource=datatable2 //把这个临时datatable绑定到datagridview上 因为你这个需求有点特殊,其实一般不会这么做,而是通过设置dataview的filter属性来筛选datatable的内容,再将datagridview的数据源设置为这个dataview。如果你能按行号去筛选,也可以尝试一下dataview的做法。

1,216

社区成员

发帖
与我相关
我的任务
社区描述
VB 数据库(包含打印,安装,报表)
社区管理员
  • 数据库(包含打印,安装,报表)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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