2010-05-26 64 views
1

我有一個對象的數據源,看起來像這樣:如何判斷是否爲selectmethod或selectcount方法調用了ObjectDataSource OnSelected事件?

<asp:ObjectDataSource ID="obdsList" runat="server" 
EnablePaging="True" SelectCountMethod="GetCountByID" SortParameterName="sortExpression" 
    OldValuesParameterFormatString="original_{0}" SelectMethod="GetByID" 
    TypeName="Services.Users" 
    onselected="obdsList_Selected"> 
    <SelectParameters> 
     <asp:QueryStringParameter Name="ID" QueryStringField="ID" 
      Type="Int32" />   
    </SelectParameters> 
</asp:ObjectDataSource> 

而一個onselected事件是這樣的:

protected void obdsList_Selected(object sender, ObjectDataSourceStatusEventArgs e) { 
} 

但是,事件方法被調用了兩次。一旦我回到名單,並用返回的Int32計數一次。如果我想將e.ReturnValue轉換爲返回列表,我該如何區分計數和選擇方法?我可以做一個e.ReturnValue.GetType().ToString()但這看起來像一個黑客攻擊。

回答

2

我這樣做...

protected void obdsList_Selected(object sender, ObjectDataSourceStatusEventArgs e) 
{ 
    if (e.ReturnValue != null) 
    { 
     if (e.ReturnValue.GetType() == typeof(int)) 
     { 
      //e.ReturnValue is the SelectCountMethod value 
     }     
    } 
} 
+0

哇,差不多一年沒有答案..至少我不是唯一的一個! – itchi 2011-05-14 05:26:35

2

From MSDN

的 ObjectDataSourceSelectingEventArgs對象的ExecutingSelectCount屬性用於確定是否 選擇被稱爲檢索數據或檢索計數。

所以我相信你需要檢查OnSelecting事件,而不是OnSelected事件。即:

protected void ods_Selecting(object sender, ObjectDataSourceSelectingEventArgs e) 
{ 
     if (e.ExecutingSelectCount) 
     { 
      //select count method is being called 
     } 
} 

但如果你真的需要它的OnSelected事件,那麼你可能需要臨時存儲e.ExecutingSelectCount某處,或者只保持檢查的結果類型我猜...

+0

很酷,謝謝! - http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.objectdatasourceselectingeventargs.executingselectcount%28v=vs.85%29.aspx – itchi 2012-09-06 17:47:12

1

我最近遇到這個問題,並通過一系列隱晦的搜索,發現我看到第二次執行(在我的ObjectDataSource中指定的SelectMethodSelectCountMethod)的原因是在更改gridview中列的可見性之後數據綁定已經發生。事實證明,對gridview中顯示的列進行數據綁定後所做的任何更改都將導致ObjectDataSource重新執行這兩種方法。

就我而言,我能夠在gridview.DataBind()調用前移動列可見性代碼,並停止執行第二組執行。但是,如果您的可見性更改取決於數據綁定檢查的結果,則這可能不可行。在這種情況下,如何處理第二次執行就必須更復雜一些。

+0

我希望我有權訪問源代碼來檢查現在這個。 :) – itchi 2013-06-25 21:37:50

相關問題