2012-12-11 17 views
0

我們有一個由Visual Studio DataSet設計器創建的類型化數據集。創建一個DataView用於排序ASP.Net GridView列

你能告訴我如何從類型化的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> 

這是我們要創建到從代碼隱藏文件中的數據視圖中的數據:

' 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 

回答

0

一個數據視圖需要連接到爲其提供排序的DataTable。

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

end if 

順便說一句,有沒有DataView constructor,它只接受一個字符串作爲輸入參數

+0

感謝您的答覆。我試過了:dv = New DataView() dv.Table = DataSetClasses.Tables(0),但得到一個錯誤,指出它需要一個對象引用。你能告訴我如何做對象引用嗎? –