DotNetNuke ObjectDataSource.SelectMethod не сохраняется в состоянии просмотра

Я использую DotNetNuke 4.9.2 и столкнулся со странной проблемой.

У меня есть MultiView в модуле, который я разрабатываю, и в одном из представлений есть GridView, привязанный к ObjectDataSource.

В отдельном представлении у меня есть несколько кнопок, которые будут переключать SelectMethod ObjectDataSource во втором представлении, а затем активировать это представление. Все это работает нормально, пока сетка не отсортирована во втором представлении, что вызывает обратную передачу, и ODS каким-то образом подхватывает свой исходный метод SelectMethod. Тем не менее, параметры SelectParameters, которые назначаются одновременно в ручке кода программной части.

Мне кажется, что ObjectDataSource должен помнить SelectMethod в состоянии просмотра, не так ли?

<asp:ObjectDataSource runat="server" ID="MyObjectDataSource" SelectMethod="MyFirstSelectMethod" TypeName="Whatever"></asp:ObjectDataSource>

protected void Button1_Click(object sender, EventArgs e)
{
    MyObjectDataSource.SelectMethod = "MyNewMethod";
    // more code here to change the parameters as well...
    MyMultiView.SetActiveView(MyView2);
}

Когда я запускаю эту кнопку, сетка отображается, как и ожидалось. Когда я щелкаю один из заголовков столбцов для GridView и прерываю загрузку страницы, чтобы проверить метод SelectMethod, он возвращается к объявленному в разметке.

Любые предложения относительно того, что моя проблема может быть здесь?


person Scott Ivey    schedule 23.03.2009    source источник
comment
Я не слишком хорошо знаком с MultiView... находится ли ObjectDataSource внутри одного из представлений? Возникнет ли проблема, если полностью исключить MultiView из уравнения?   -  person Bryan    schedule 24.03.2009
comment
Я попытался переместить ODS за пределы мультивью - все равно не повезло. В прошлом это отлично работало для меня в стандартном asp.net, поэтому я предполагаю, что что-то в nuke мешает.   -  person Scott Ivey    schedule 24.03.2009


Ответы (2)


Я предполагаю, что вы убедились, что не сбрасываете .SelectMethod при перезагрузке страницы?

person bdukes    schedule 24.03.2009
comment
да - я прочесывал каждую строку кода по крайней мере дюжину раз. Раздражающий. - person Scott Ivey; 24.03.2009

В итоге я решил проблему, просто используя свойство страницы для хранения метода select, а затем сбрасывая его при каждой обратной передаче...

protected string MySelectMethod
{
    get
    {
        return (string)ViewState["MySelectMethod"] ?? MySearchResultsDataSource.SelectMethod;
    }
    set
    {
        ViewState["MySelectMethod"] = value;

        MySearchResultsDataSource.SelectMethod = value;

    }
}

protected void Page_Load(object sender, EventArgs e)
{
    if (IsPostBack)
    {
        MySearchResultsDataSource.SelectMethod = MySelectMethod;
    }
}

protected void MyButton_Click(object sender, EventArgs e)
{
    MySelectMethod = "MyNewMethod";
}

Все еще не уверен, почему этот реквизит SelectMethod не прикрепляется к обратной передаче в nuke. Я уверен, что в прошлом это отлично работало для меня в прямых проектах asp.net...

person Scott Ivey    schedule 24.03.2009