문제

나는 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를 재설정하지 않는지 확인했다고 생각하십니까?

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top