DotNetNuke ObjectDataSource.SelectMethod не сохраняется в состоянии просмотра - PullRequest
0 голосов
/ 23 марта 2009

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

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

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

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

<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, он возвращается к объявленному в разметке.

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

Ответы [ 2 ]

0 голосов
/ 24 марта 2009

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

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 в прошлом ...

0 голосов
/ 24 марта 2009

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

...