dotnetNuke ObjectDatasource.selectMethod는 ViewState에서 저장되지 않습니다
-
21-08-2019 - |
문제
나는 dotnetnuke 4.9.2를 사용하고 있으며 이상한 문제가 발생합니다.
내가 개발중인 모듈에는 멀티 뷰가 있으며, 뷰 중 하나에는 ObjectDatasource에 바인딩되는 그리드 뷰가 있습니다.
별도의보기에는 2 차보기에서 ObjectDatasource의 선택 메드를 전환 한 다음 해당보기를 활성화하는 몇 가지 버튼이 있습니다. 그리드가 2 차보기에 정렬 될 때까지 모든 것이 잘 작동합니다. 이는 포스트 백이 발생하고 ODS는 어떻게 든 원래 선택 메드를 선택합니다. 코드-비만 스틱에 동시에 할당 된 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
Page 속성을 사용하여 SelectMethod를 유지 한 다음 각 Postback에서 재설정하여 문제를 해결했습니다.
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 Prop이 Nuke의 포스트백에 붙어 있지 않은지 확실하지 않습니다. 나는 이것이 과거에 똑바로 ASP.NET 프로젝트에서 나에게 잘 작동했다고 확신합니다 ...
다른 팁
페이지가 다시로드 될 때 .selectMethod를 재설정하지 않는지 확인했다고 생각하십니까?