vb.net連接資料庫后,運行程式時如何讓DataGridView1不顯示資料庫表的資料,當點擊顯示下一行按鈕,DataGridView1就顯示表的第一行資料,再點擊下一行就顯示下一行資料,DataGridView1只顯示一行資料。上一行同理,求大神教。
uj5u.com熱心網友回復:
用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的做法。
uj5u.com熱心網友回復:
dataview的filter屬性來篩選的話應該怎么填,表的所有列都在。。uj5u.com熱心網友回復:
因為對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
uj5u.com熱心網友回復:
上面的還是太羅嗦了,不過做法并沒有問題。剛才試了一下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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/57473.html
上一篇:excel根據日期播放音頻
