我使用的是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时,它已经恢复为标记中声明的那个。
对我的问题有什么建议吗?
发布于 2009-03-24 14:45:05
我最终解决了这个问题,只使用了一个页面属性来保存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项目中对我来说效果很好……
发布于 2009-03-24 14:15:34
我猜你已经确保在页面重新加载时不会重置.SelectMethod?
https://stackoverflow.com/questions/675034
复制相似问题