ObjectDataSource вызывает несколько раз во вложенном gridview

У меня есть вложенный GridView. Когда я расширяю строку внешнего, он показывает внутренний GridView. Оба gridviews находятся внутри UpdatePanel и используют ObjectDataSource для заполнения данных.

Когда я нажимаю «развернуть», я отправляю сообщение, нажав кнопку через JQuery. Здесь ObjectDataSource1, предназначенный для внешней сетки, несколько раз вызывает SelectMethod. Я проверил UpdatePanel UpdateMode is Conditional.

Как я могу запретить ObjectDataSource получать данные несколько раз?

ASPX:

<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" SelectCountMethod="GetDevicesCount" SelectMethod="GetDevices" TypeName="Flows" SortParameterName="sortExpression" EnablePaging="True">
    <SelectParameters>
        <asp:ControlParameter ControlID="txtSearch" Name="searchTerm" PropertyName="Text" Type="String" />
        <asp:ControlParameter ControlID="hdnFieldFromDate" Name="fromDate" PropertyName="Value" Type="String" />
        <asp:ControlParameter ControlID="hdnFieldToDate" Name="toDate" PropertyName="Value" Type="String" />
    </SelectParameters>
</asp:ObjectDataSource>
<asp:ObjectDataSource ID="ObjectDataSource2" runat="server" SelectCountMethod="GetFlowDetailsCount" SelectMethod="GetFlowDetails" OnSelecting="ObjectDataSource2_Selecting" TypeName="Flows" EnablePaging="True">
    <SelectParameters>
        <asp:ControlParameter ControlID="HiddenDeviceId" Name="deviceId" PropertyName="Value" Type="String" />
        <asp:ControlParameter ControlID="hdnFieldFromDate" Name="fromDate" PropertyName="Value" Type="DateTime" />
        <asp:ControlParameter ControlID="hdnFieldToDate" Name="toDate" PropertyName="Value" Type="DateTime" />
    </SelectParameters>
</asp:ObjectDataSource>

person SiD    schedule 07.05.2015    source источник
comment
см. этот msdn.microsoft.com/en-us/library /aa479353(d=printer).aspx   -  person Feras Salim    schedule 27.06.2015


Ответы (1)


Я справился с этим двумя способами.

1: На стороне ASPX вашей страницы установите для метода select значение SelectMethod = "" и назначьте его, если страница является обратной.

if (Page.IsPostBack)
{
    //Always set the select methods.
    SetSelectMethods();
}
else
{
    ODSGetOptionSearchDataCS.SelectMethod = string.Empty;
    ODSWatchlistCS.SelectMethod = string.Empty;
}    

private void SetSelectMethods()
{
    ODSGetOptionSearchDataCS.SelectMethod = "GetOptionCondors";
    ODSWatchlistCS.SelectMethod = "GetOptionWLCondors";
}
  1. Меня действительно не волнует, как я справился с этим выше, поэтому, продвигаясь вперед в моем методе выбора, я кэширую данные в течение 10 секунд (дольше, если мне нужно), я разрешаю этому методу запускаться снова, но вернул кешированные данные, а не нажал кнопку база данных снова.
person Patrick    schedule 28.11.2015