2010-06-10 80 views
2

我有一個綁定到DataView的GridView。 DataView表中的某些列是到相關表(f.e。Customer)的外鍵。我也想爲這些列啓用排序,但我所能做的只是排序foreignkey(fiCustomer)而不是CustomerName。對與其他表格相關的GridView列排序

我已經試過這沒有成功(「找不到列ERP_Customer.CustomerName」):

<asp:TemplateField HeaderText="Customer" SortExpression="ERP_Customer.CustomerName" > 

A也試過的DataViewManager,但我已經檢測到表中的問題排序:

Dim daCharge As New ERPModel.dsERPTableAdapters.ERP_ChargeTableAdapter 
    daCharge.Fill(dsERP.ERP_Charge) 
    Dim viewManager As New DataViewManager(Me.dsERP) 
    viewManager.DataViewSettings(dsERP.ERP_Charge).RowFilter = filter 
    viewManager.DataViewSettings(dsERP.ERP_Charge).Sort = sort 'sort is the GridView's SortExpression 
    Me.GrdCharge.DataSource = viewManager.CreateDataView(dsERP.ERP_Charge) 

我必須在DataViewManager的一個不同的表上應用這種排序,但是這個表在相關的表上會有所不同。 我已綁定的代碼隱藏在TemplateColumns中的RowDataBound-事件f.e:

Dim LblCustomer As Label = DirectCast(e.Row.FindControl("LblCustomer"), Label) 
LblCustomer.Text = drCharge.ERP_CustomerRow.CustomerName 'drCharge inherits DataRow 

什麼是排序與其他表列的GridView中推薦的方法是什麼?我可以使用customername而不是foreignkey構建自定義數據表,並將此列綁定到TemplateField。但是,那麼我在模型中的巨大數據集就沒有意義了。

編輯: 似乎我的問題不清楚或太特殊。或許我可以用一個更一般的術語來解釋它。 我有一個數據集模型。我從它綁定一個Datatable(ERP_Charge)到我的GridView(實際上我從該表中取數據視圖)。在這個Datatable中是與Dataset中其他Datatables相關的列(關係已定義)。當我想讓網格排序在屬於ERP_Charge的列上沒有問題。但具有外鍵到其他表的列無法排序,因爲Gridview顯示f.e.不是CustomerID,而是Customername。我在RowDataBound中獲得Customername。 通常我會加入表格併爲Customername添加一個Datacolumn。然後我將這個「虛擬」Datatable設置爲來自Gridview的數據源,我可以對其進行排序。但我並不想在頁面上快速創建數據表(它屬於模型)。 我必須在數據集設計器中定義它嗎?我認爲這將足以定義數據集中的關係。

UPDATE:我已經解決了我的排序問題,如下所示。

問候

+1

閱讀你的問題,並面臨同樣的問題。你有沒有考慮過使用Linq來獲取Objects並將它們用作數據源? 我發現它非常方便選擇從多個連接表中獲取列的結果。 – PeterFromCologne 2010-06-11 21:19:16

+0

我必須承認linq在我的知識中仍然存在差距。我擔心要花費太多時間來改變我的模型以使用linq,當然也要學習基礎知識。不過謝謝你的建議,我會考慮一下。 – 2010-06-11 21:44:16

回答

0

UPDATE:我已經解決了我以下列方式排序的問題:我改變了我的數據集模型,並加入了相關表主表(ERP_Charge)。我將列添加到我想要排序的Datatable(f.e。CustomerName)。但是我沒有將它保存在DataAdapter的配置嚮導中,因爲這會刪除所有的Update-,Delete-和InsertCommands。因此,我只改變了從嚮導生成的SelectCommand。因此,我保留了我的Datamodel的好處,能夠對相關表的列進行排序。也許查詢現在有點慢,因爲連接,但它適用於我。

相關問題