簡體   English   中英

GridView排序不適用於ObjectDataSource

[英]GridView sorting not working with ObjectDataSource

我使用GridView來通過使用DataSource屬性的ObjectDataSource進行綁定。 現在,問題是我有一個整數字段,如下所示:

<asp:GridView ... DataSource="MyObjectDataSource" OnSorting="MyGrdView_Sorting" >
<Columns>
<asp:BoundField DataField="IntegerField" Visible="False" SortExpression="IntegerField" />
</Columns>
</asp:GridView>

我還捕獲了RowCommand事件用於我的業務邏輯目的,並在其中觸發GridView的Sort()方法。 以防萬一,如果我從Sorting事件處理程序中觸發了Sort()方法,則會得到堆棧溢出異常,但我不知道它為什么會發生?

最后,即使執行了我認為此處沒有發生的正確操作,排序仍然無法在帶有IntegerField的GridView中正常工作。 我做錯了什么? :(

在Sorting事件上觸發Sort()將再次觸發Sorting事件,從而導致堆棧溢出。

我的第一個想法是,當您可能應該使用DataSourceId屬性時,您正在使用DataSource屬性。

編輯:

好的,我回答的速度太快了,閱讀的速度太慢了。 ;)您可以與我們分享您對MyGrdView_Sorting的實現嗎?

第二次編輯並回答評論:

“我只是在MyGrdView_Sorting處理程序中執行((GridView)sender).Sort(“ IntegerField”,SortDirection.Ascending);”。

調用GridView.Sort會觸發Sorting事件,在您的情況下,它將調用Sort,這將觸發Sorting事件,這將調用Sort,...您在這里看到這個模式嗎? ;)

就像您提到的那樣,您將需要在業務邏輯中的另一個位置進行排序。 您可以設置ObjectDataSource.CanSort = true,指定SortParameterName,然后讓SelectMethod進行實際排序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM