0

コードビハインドで Gridview にバインドされたデータテーブルがあります。これは、コード ビハインドで列を並べ替える必要があり、レコードを検索するときにコード ビハインドでも行われると想像することを意味します。

グリッドビューをソートする必要があるコードは

Private Function GetCustData As Datatable
Dim dt as new datatable

dt = GetDataFromBusinessLayer(CustomerID)
Return dt

End Function

そしてソートするコード

Private Sub gv_Sorting(sender As Object, e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles gv.Sorting
    If e.SortExpression = "Name" 
        gv.DataSource = GetCustData '.DefaultView.Sort = "Name" & "DESC"
        gv.DataBind()
    End If
End Sub

おわかりのように、.DefaultView.Sort = "Name" & "DESC" を使用してみましたが、これは機能せず、エラーData source is an invalid type が発生しました。IListSource、IEnumerable、または IDataSource のいずれかである必要があります。ほとんどの検索はViewstateを使用していますが、私の場合は当てはまらないようです。

1つまたは複数の列をソートする方法を教えてもらえますか?

さらに、名前列を検索するテキストボックスが必要です。それに関しては上記で十分だと思いますが、そうでない場合、誰かが私を正しい軌道に乗せて、後の段階で何をしているのかを変更するのではなく、今それに向かって取り組むことができますか?

4

3 に答える 3

1

まず、現在のコードにはスペースがありません。Name DESC でソートするには、Sort 文字列は "Name DESC" である必要があります。

並べ替え文字列を複数の列に設定するには、次のように各列の間にコンマを追加します。

Dim dt as new datatable = GetCustData(1)
dt.DefaultView.Sort = "Name DESC, FirstName ASC"
gv.DataSource = dt.DefaultView
gv.DataBind()
于 2013-03-06T20:02:21.160 に答える
1

行のリストを作成できると思います

List<DataRow> list = dt.AsEnumerable().ToList();

そして、リストがある場合は、ソートを使用できるようになりました

list.OrederBy(c=>c.///specific value in your list)
于 2013-03-06T19:51:03.613 に答える
0

Linqあなたのためにソートを行うために使用するのはどうですか。

Dim dt as new datatable

dt = From dr as Datarow in GetDataFromBusinessLayer(CustomerID)
     Order by dr.item("First Sort field), dr.Item("Second Sort Field")
     Select dr

Return dt

... IDE なしでこれを行いましたが、うまくいくはずです。

これがオンラインの1つの例です-Linqを使用したDataTableの並べ替え

お役に立てれば。

于 2013-03-06T20:02:13.277 に答える