C# 在嵌套gridview中多次调用ObjectDataSource

C# 在嵌套gridview中多次调用ObjectDataSource,c#,asp.net,gridview,objectdatasource,C#,Asp.net,Gridview,Objectdatasource,我有嵌套的GridView。当我展开“外部”行时,它显示内部GridView。两个GridView都位于UpdatePanel内,并使用ObjectDataSource填充数据 当我单击expand时,我正在通过JQuery单击一个按钮进行回发。在这里,用于外部网格的ObjectDataSource1多次调用SelectMethod。我检查了UpdatePanel UpdateMode是否有条件 如何防止ObjectDataSource多次提取数据 ASPX: 我用两种方法处理了这个问题 1:在

我有嵌套的GridView。当我展开“外部”行时,它显示内部GridView。两个GridView都位于UpdatePanel内,并使用ObjectDataSource填充数据

当我单击expand时,我正在通过JQuery单击一个按钮进行回发。在这里,用于外部网格的ObjectDataSource1多次调用SelectMethod。我检查了UpdatePanel UpdateMode是否有条件

如何防止ObjectDataSource多次提取数据

ASPX:


我用两种方法处理了这个问题

1:在页面的ASPX端,将选择方法设置为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";
}
  • 我真的不在乎我如何处理上面的问题,所以在我的select方法中,我将数据缓存10秒(如果需要的话会更长),我允许该方法再次运行,但返回缓存的数据,而不是再次命中数据库
  • 看到这个了吗
    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";
    }