DotNetNuke的ObjectDataSource.SelectMethod没有被保存在视图状态
-
21-08-2019 - |
题
我使用的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时重新加载页面?
不隶属于 StackOverflow