首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DotNetNuke ObjectDataSource.SelectMethod未保存在视图状态中

DotNetNuke ObjectDataSource.SelectMethod未保存在视图状态中
EN

Stack Overflow用户
提问于 2009-03-23 20:09:02
回答 2查看 1.2K关注 0票数 0

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

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

在一个单独的视图中,我有几个按钮可以切换第二个视图中ObjectDataSource的SelectMethod,然后将该视图设置为活动视图。这一切都很好,直到网格在第二个视图上被排序-这会导致回发,而且ODS以某种方式拾取了它的原始SelectMethod。但是,在代码隐藏中同时分配的SelectParameters仍然有效。

在我看来,ObjectDataSource应该在视图状态中记住SelectMethod,不是吗?

代码语言:javascript
复制
<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时,它已经恢复为标记中声明的那个。

对我的问题有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-03-24 14:45:05

我最终解决了这个问题,只使用了一个页面属性来保存selectmethod,然后在每次回发时重新设置它……

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2009-03-24 14:15:34

我猜你已经确保在页面重新加载时不会重置.SelectMethod?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/675034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档