문제

드롭 다운에 구속력이 있습니다. 초기 부하에서 작동합니다. 후속로드 (Postbacks)에서는 드롭 다운에서 항목을 새로 고치지 않습니다.

using (DataView dv = dtProductGroup.DefaultView)
{
        dv.ApplyDefaultSort = false; 
        dv.Sort = "KVIGroupName ASC";

        ddlGroup.ClearSelection();
        ddlGroup.Items.Clear();

        string strAll = Localization.GetResourceValue("_strddlStatusLBAll");
        ddlGroup.DataValueField = "KVIGroupId";
        ddlGroup.DataTextField = "KVIGroupName";
        ddlGroup.DataSource = dv;
        ddlGroup.DataBind();

        ListItem item = new ListItem(strAll, "0");
        ddlGroup.Items.Insert(0, item); 
}

포스트 백에서 데이터가 드롭 다운에 바인딩되고 항목이 성공적으로 추가된다는 것을 확인했습니다. 그러나 페이지가 렌더링하면 드롭 다운에는 새로운 값이 없습니다.

두 가지 가능성이 있습니다. 컨트롤은 새로운 값을 렌더링하지 않거나 값이 지워지고 있습니다. 나는 가능한 문제를 찾을 곳을 잃어 버렸다.

편집하다

나는 문제를 발견했다. 드롭 다운 목록은 조건부 업데이트 패널에 포함되었습니다. 단순히 "UpdatePanel.update ();" 문제를 해결했습니다.

도움이 되었습니까?

해결책

Postback에서 ViewState가 다시 적용되고 있습니다 + 값을 다시로드하려고한다고 말했습니다. viewstate가 포스트 백에 모든 무게를 가지고 다니도록하는 것이 좋습니다. if (! ispostback)를 추가하여 페이지가 처음 쳤을 때만 값을로드하십시오.

using (DataView dv = dtProductGroup.DefaultView)
{
   if (! IsPostBack) {

        dv.ApplyDefaultSort = false; 
        dv.Sort = "KVIGroupName ASC";

        ddlGroup.ClearSelection();
        ddlGroup.Items.Clear();

        string strAll = Localization.GetResourceValue("_strddlStatusLBAll");
        ddlGroup.DataValueField = "KVIGroupId";
        ddlGroup.DataTextField = "KVIGroupName";
        ddlGroup.DataSource = dv;
        ddlGroup.DataBind();

        ListItem item = new ListItem(strAll, "0");
        ddlGroup.Items.Insert(0, item); 
   }
}

편집하다:또한 구문은 코드 블록이 종료 될 때 DV에서 참조 된 DataView 객체가 배치되도록합니다. 두 번째 추측은 이것이 문제를 일으키는 부작용을 일으킨다는 것입니다.

using (DataView dv = dtProductGroup.DefaultView)
{

대신 사용을 제외하고 다음과 같은 일반 선언문을 작성하십시오 (페이지가 렌더링 될 때 Dataview는 다른 모든 것들과 함께 배치 될 예정이므로 직접 수행 할 필요가 없습니다).

DataView dv = dtProductGroup.DefaultView;

참조 '사용'및 idisposable에 대한 MSDN 문서 자세한 정보.

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