2011-02-05 2 views
0

전체 프로젝트 또는 특정 반복에 대한 태그 구름을 필터링하거나 표시해야하는 양식의 드롭 다운 목록이 있습니다. 현재로서는 오류가 발생하지 않지만 ASCX 컨트롤은 업데이트되지 않는 것 같습니다. 여기 내 코드, 어떤 도움을 주시면 감사하겠습니다!ASCX 컨트롤을 걸러내는 DropDown

ASPX 파일 :

<asp:DropDownList ID="filteroptions" runat="server" onselectedindexchanged="filteroptions_SelectedIndexChanged" AutoPostBack="true"></asp:DropDownList> 

<asp:UpdatePanel ID="UpdateIteration" runat="server"> 
       <ContentTemplate> 
         <TagCloud:TagCloudControl ID="TagCloudControl1" runat="server" /> 
       </ContentTemplate> 
       <Triggers> 
        <asp:AsyncPostBackTrigger ControlID="filteroptions" /> 
       </Triggers> 
</asp:UpdatePanel> 

C#을 FILE :

protected void Page_Load(object sender, EventArgs e) 
{ 

    ... 

    filteroptions.DataSource = ds; 
    filteroptions.DataTextField = "Iteration"; 
    filteroptions.DataValueField = "ProjectIterationID"; 
    filteroptions.DataBind(); 

    filteroptions.Items.Insert(0, new System.Web.UI.WebControls.ListItem("Entire Project", "0")); 

} 

protected void filteroptions_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string selected_iteration = filteroptions.SelectedValue; 

    Session["iteration"] = selected_iteration; 
} 

ASCX CS 파일 :

string proj_id, proj_name, iteration; 

protected void Page_Load(object sender, EventArgs e) 
{ 
    proj_name = Request.QueryString["project"].ToString(); 
    proj_id = Request.QueryString["id"].ToString(); 

    if (String.IsNullOrEmpty((string)Session["iteration"])) 
     iteration = "0"; 
    else 
     iteration = (string)Session["iteration"]; 

    BindTagCloud(); 

} 

private void BindTagCloud() 
{ 

    int pro_id = Convert.ToInt32(proj_id); 
    int iteration_id = Convert.ToInt32(iteration); 

    .... 

    if (iteration_id != 0) 
    { 
     ListView1.DataSource = tagCloudNegativeIteration; 
     ListView1.DataBind(); 

     ListView2.DataSource = tagCloudPositiveIteration; 
     ListView2.DataBind(); 

    } 
    else 
    { 
     ListView1.DataSource = tagCloudNegative; 
     ListView1.DataBind(); 

     ListView2.DataSource = tagCloudPositive; 
     ListView2.DataBind(); 

    } 
+0

updatepanel은 정말 쉬운 일을 정말 어렵게 만들었 기 때문에 나는 개인적으로 updatepanel을 사용하지 않을 것입니다. 나는 그 대신에 요청을 해고 당신이 응답으로 tagcloud를 원할 지역을 채울 것이다. –

답변

0

당신은 '...'에 의해 몇 가지 코드를 대체하기 때문에이 대답 수도 틀리다.

주어진 코드와 함께 문제가 .aspx 파일의 Page_Load 메서드에 있다고 생각합니다. 드롭 다운 목록에 데이터 집합의 바인딩이 포스트 백에서도 발생하는 것으로 보입니다. 페이지가 포스트 백을 받으면 데이터 세트를 드롭 다운 목록에 바인딩하고 selectedValue를 첫 번째 항목으로 설정합니다. 이 작업이 완료되면 이벤트가 처리되고 해당 리스너가 호출됩니다. 'filteroptions_SelectedIndexChanged'메서드에서 selectedValue를 확인하면 선택한 항목의 값이 아닌 현재 첫 번째 항목의 값이됩니다.

이있는 드롭 다운리스트의 바인딩을 넣어 해결하려면이 같은 :이 잘못된 가정을 기반으로하기 때문에이 대답이 잘못

protected void Page_Load(object sender, EventArgs e) { 

    ... 

    if (!IsPostBack) 
    { 
     filteroptions.DataSource = ds; 
     filteroptions.DataTextField = "Iteration"; 
     filteroptions.DataValueField = "ProjectIterationID"; 
     filteroptions.DataBind(); 

     filteroptions.Items.Insert(0, new System.Web.UI.WebControls.ListItem("Entire Project", "0"))l 
    } 
} 

경우 나에게 전체 코드를 제공하고 I하시기 바랍니다 (IsPostBack을!) 너와 함께 생각할 것이다.

+0

안녕하세요. TurBas, 당신이 말한 것처럼 (! ISPostBack)에 드롭 다운의 바인딩을 넣었습니다. 그리고 마침내 뭔가가 생기기 시작했습니다. 그러나 목록에서 특정 반복을 선택할 때 다른 결과를 얻으므로 이상합니다. 때로는 ascx 컨트롤이 전혀 표시되지 않는 경우도 있지만 때로는 태그 클라우드를 표시하는 경우도 있지만 올바르지 않고 때로는 올바른 것을 표시합니다. 왜 이런 일이 벌어지고 있는지 잘 모르겠습니다. S – MiziaQ

+0

안녕하세요. MiziaQ입니다. 제 대답이 도움이 되었기 때문에 기쁩니다. 나는 당신이 게시 한 코드가 그것을 다루지 않기 때문에 당신이 코멘트에서 설명하는 문제들로 당신을 도울 수 없다. – TurBas

+0

나는 여기 TurBas에 정말로 붙어있다. 이 링크를 통해 BindTagCloud 메소드 전체를 볼 수 있습니다 : http://stackoverflow.com/questions/4917019/tagcloud-size-problem. 어딘가에 드롭 다운 선택을 취소해야합니까? 콤보 박스에서 반복을 선택할 때마다 나는 다른 태그 구름을 얻습니다. 때때로 ascx 컨트롤이 전혀 표시되지 않습니다 ... – MiziaQ