我使用的DotNetNuke 4.9.2和正在运行到一个奇怪的问题。

我有一个多视图,我正在开发在模块中,并且在其中一个视图具有绑定到一个ObjectDataSource一个GridView。

在一个单独的视图,我有几个按钮,可以将切换将ObjectDataSource的SelectMethod在第二视图和然后设置图活性。这一切工作正常,直到电网2号视图排序 - 这会导致回传和ODS莫名其妙地拿起原来SelectMethod。被同时在所分配的SelectParameters代码隐藏粘虽然。

在我看来,将ObjectDataSource应该记住在ViewState中的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,它已经恢复到一个在标记声明。

至于什么任何建议,我的问题可能会在这里?

有帮助吗?

解决方案 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道具不沾在核武器回发。我敢肯定,这已经在过去的工作对我罚款直asp.net项目...

其他提示

我猜你确信你没有重置.SelectMethod时重新加载页面?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top