0

Visual Studio DataSet デザイナーによって作成された型指定された DataSet があります。

型指定された DataSet から DataView オブジェクトを作成する方法を教えてください。ASP.Net DataView に表示できるように、並べ替えを変更したいと考えています。

これを見つけるために長い間検索しましたが、手ぶらでたどり着きました。

これは DataView のマークアップです。Web フォームが大きいため、すべてのコーディングが削減されます。

<asp:UpdatePanel 
    ID="UpdatePanelSummary" 
    runat="server" 
    UpdateMode="Always">

    <ContentTemplate> 

        <h1>Maintenance</h1>

        <% '-- GridView (Grid) for summary.                                                      -- %>
        <% '-- The user chooses a summary row from here and details are shown in a DetailsView.  -- %>
        <% '--------------------------------------------------------------------------------------- %>

        <asp:GridView
            ID="GridViewSummary" 
            runat="server" 
            AllowSorting="True" 
            AutoGenerateColumns="False" 
            DataKeyNames="ID" 
            Width="224px" 
            AllowPaging="True" 
            PageSize="7">

            <Columns>
                <asp:BoundField DataField="Unit" HeaderText="Unit" 
                    SortExpression="Unit" />

                <asp:BoundField DataField="TheName" HeaderText="Name" 
                    SortExpression="TheName" />

                <asp:BoundField DataField="ID" 
                    HeaderText="ID" SortExpression="ID" InsertVisible="False" ReadOnly="True" 
                    Visible="False" />

                <asp:CommandField ButtonType="Button" SelectText="Select Unit Details" 
                    ShowSelectButton="True" />
            </Columns>
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>

これは、コード ビハインド ファイルから DataView に作成するデータです。

' Database objects.
'------------------
Dim theTableAdapter As New DataSetClassesTableAdapters.ClassesTableAdapter

Private Sub Teachers_Init(sender As Object, e As EventArgs) Handles Me.Init

    ' Load the data from the database into the GridView.
    '---------------------------------------------------
    GridViewSummary.DataSource = theTableAdapter.GetDataByAllClasses
    GridViewSummary.DataBind()

End Sub

Private Function bindgrid() As DataView

    Dim dv As DataView = New DataView()

    If ViewState("sortExpr") IsNot Nothing Then
        dv = New DataView("The DataSet Is Here")
        dv.Sort = DirectCast(ViewState("sortExpr"), String)
    Else
        dv = ds.Tables(0).DefaultView
    End If

    Return dv
End Function

Protected Sub GridViewSummary_Sorting(sender As Object, e As GridViewSortEventArgs) Handles GridViewSummary.Sorting

    ViewState("sortExpr") = e.SortExpression
    GridViewSummary.DataSource = bindgrid()
    GridViewSummary.DataBind()
End Sub
4

1 に答える 1

0

DataView は、並べ替えを提供する DataTable に接続する必要があります。

if ViewState(...) IsNot Nothing then
    dv = New DataView()
    dv.Table = ds.Tables(0)
    ....
else

end if

ちなみに、入力パラメータとして文字列のみを取るDataView コンストラクタはありません。

于 2012-12-11T16:49:14.020 に答える