【问题标题】:DotNetNuke ObjectDataSource.SelectMethod not being saved in viewstateDotNetNuke ObjectDataSource.SelectMethod 未保存在视图状态中
【发布时间】:2009-03-23 20:09:02
【问题描述】:

我正在使用 DotNetNuke 4.9.2,但遇到了一个奇怪的问题。

我正在开发的模块中有一个 MultiView,其中一个视图中有一个绑定到 ObjectDataSource 的 GridView。

在一个单独的视图中,我有几个按钮可以在第二个视图中切换 ObjectDataSource 的 SelectMethod,然后将该视图设置为活动状态。一切正常,直到网格在第二个视图上排序 - 这会导致回发并且 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 时,它已恢复为标记中声明的列标题。

关于我的问题可能在这里有什么建议吗?

【问题讨论】:

  • 我对 MultiView 不太熟悉...是其中一个视图中的 ObjectDataSource 吗?如果您将 MultiView 完全排除在外,问题是否仍然存在?
  • 我尝试将 ODS 移到多视图之外 - 仍然没有运气。过去,这在标准 asp.net 中对我来说效果很好 - 所以我猜测 nuke 中的某些东西正在干扰。

标签: asp.net dotnetnuke objectdatasource dotnetnuke-module


【解决方案1】:

我猜你已经确定在页面重新加载时没有重置 .SelectMethod?

【讨论】:

  • 是的 - 我已经梳理了每一行代码至少十几次。令人沮丧。
【解决方案2】:

我最终解决了这个问题,只使用一个页面属性来保存选择方法,然后在每次回发时重置它...

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 项目中对我来说效果很好......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多