Вопрос

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

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

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

Мне кажется, что 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

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

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

Другие советы

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top