2011-02-12 6 views
0

전체 프로젝트 또는 특정 반복에 대한 태그 클라우드를 필터링하거나 표시해야하는 양식의 드롭 다운 목록이 있습니다. 그러나 목록에서 특정 반복을 선택할 때 다른 결과를 얻으므로 이상합니다. 때로는 ascx 컨트롤이 전혀 표시되지 않는 경우도 있지만 때로는 태그 클라우드를 표시하는 경우도 있지만 올바르지 않고 때로는 올바른 태그를 표시합니다. 왜 이런 일이 일어나는지 잘 모르겠다. 미리 도와 줘서 고마워!DropDown이 ASCX 컨트롤을 올바르게 필터링하지 않습니다.

displaycloud.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> 

displaycloud.aspx.cs :

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

    SqlConnection conn = new SqlConnection(GetConnectionString()); 
    conn.Open(); 

    cmd = new SqlCommand("Select CONVERT(VARCHAR(10), StartDate, 103) + ' - ' + CONVERT(VARCHAR(10), EndDate, 103) AS Iteration, ProjectIterationID FROM Iterations WHERE ProjectID = '" + proj_id + "'", conn); 

    cmd.CommandType = CommandType.Text; 

    SqlDataAdapter da = new SqlDataAdapter(cmd); 

    DataSet ds = new DataSet(); 

    da.Fill(ds);; 

    conn.Close(); 

    if (!Page.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")); 

    } 
} 


protected void filteroptions_SelectedIndexChanged(object sender, EventArgs e) 
{ 

    string selected_iteration = filteroptions.SelectedValue; 
    Session["iteration"] = selected_iteration; 

} 

ASCX CS 파일 : 나는 당신이 선택한 반복을 넣어 filteroptions_SelectedIndexChanged 방법을 사용하여 알 수있는 바와 같이

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); 

    var tagSummaryNegative = from af in db.AgileFactors 
        join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID 
        join s in db.Stories on psf.StoryID equals s.StoryID 
        join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID 
        join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID 
        join pro in db.Projects on it.ProjectID equals pro.ProjectID 
        where pro.ProjectID == pro_id && 
          pro.ProjectID == it.ProjectID && 
          it.ProjectIterationID == pim.ProjectIterationID && 
          pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 && 
          s.StoryID == psf.StoryID && 
          psf.AgileFactorID == af.AgileFactorID 
        group af by af.Name into tagGroup 

        select new 
        { 

         Tag = tagGroup.Key, 
         tagCount = tagGroup.Count() 

        }; 

    var tagSummaryNegativeIteration = from af in db.AgileFactors 
          join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID 
          join s in db.Stories on psf.StoryID equals s.StoryID 
          join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID 
          join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID 
          join pro in db.Projects on it.ProjectID equals pro.ProjectID 
          where pro.ProjectID == pro_id && 
            pro.ProjectID == it.ProjectID && 
            it.ProjectIterationID == iteration_id && 
            it.ProjectIterationID == pim.ProjectIterationID && 
            pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 && 
            s.StoryID == psf.StoryID && 
            psf.AgileFactorID == af.AgileFactorID 
          group af by af.Name into tagGroup 

          select new 
          { 

           Tag = tagGroup.Key, 
           tagCount = tagGroup.Count() 

          }; 

    var tagSummaryPositive = from af in db.AgileFactors 
          join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID 
          join s in db.Stories on psf.StoryID equals s.StoryID 
          join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID 
          join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID 
          join pro in db.Projects on it.ProjectID equals pro.ProjectID 
          where pro.ProjectID == pro_id && 
            pro.ProjectID == it.ProjectID && 
            it.ProjectIterationID == pim.ProjectIterationID && 
            pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 0 && 
            s.StoryID == psf.StoryID && 
            psf.AgileFactorID == af.AgileFactorID 
          group af by af.Name into tagGroup 

          select new 
          { 

           Tag = tagGroup.Key, 
           tagCount = tagGroup.Count() 

          }; 

    var tagSummaryPositiveIteration = from af in db.AgileFactors 
          join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID 
          join s in db.Stories on psf.StoryID equals s.StoryID 
          join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID 
          join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID 
          join pro in db.Projects on it.ProjectID equals pro.ProjectID 
          where pro.ProjectID == pro_id && 
            pro.ProjectID == it.ProjectID && 
            it.ProjectIterationID == iteration_id && 
            it.ProjectIterationID == pim.ProjectIterationID && 
            pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 0 && 
            s.StoryID == psf.StoryID && 
            psf.AgileFactorID == af.AgileFactorID 
          group af by af.Name into tagGroup 

          select new 
          { 

           Tag = tagGroup.Key, 
           tagCount = tagGroup.Count() 

          }; 


    int maxTagFrequencyNegative = (from t in tagSummaryNegative select (int?)t.tagCount).Max() ?? 0; 
    int maxTagFrequencyPositive = (from t in tagSummaryPositive select (int?)t.tagCount).Max() ?? 0; 

    int maxTagFrequencyNegativeIteration = (from t in tagSummaryNegativeIteration select (int?)t.tagCount).Max() ?? 0; 
    int maxTagFrequencyPositiveIteration = (from t in tagSummaryPositiveIteration select (int?)t.tagCount).Max() ?? 0; 


    var tagCloudNegative = from af in db.AgileFactors 
        join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID 
        join s in db.Stories on psf.StoryID equals s.StoryID 
        join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID 
        join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID 
        join pro in db.Projects on it.ProjectID equals pro.ProjectID 
        where pro.ProjectID == pro_id && 
         pro.ProjectID == it.ProjectID && 
         it.ProjectIterationID == pim.ProjectIterationID && 
         pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 && 
         s.StoryID == psf.StoryID && 
         psf.AgileFactorID == af.AgileFactorID 
        group af by af.Name into tagGroup 
        select new 
        { 

         Tag = tagGroup.Key, 
         weight = (double)tagGroup.Count()/maxTagFrequencyNegative * 100 
        }; 

    var tagCloudNegativeIteration = from af in db.AgileFactors 
          join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID 
          join s in db.Stories on psf.StoryID equals s.StoryID 
          join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID 
          join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID 
          join pro in db.Projects on it.ProjectID equals pro.ProjectID 
          where pro.ProjectID == pro_id && 
           pro.ProjectID == it.ProjectID && 
           it.ProjectIterationID == iteration_id && 
           it.ProjectIterationID == pim.ProjectIterationID && 
           pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 1 && 
           s.StoryID == psf.StoryID && 
           psf.AgileFactorID == af.AgileFactorID 
          group af by af.Name into tagGroup 
          select new 
          { 

           Tag = tagGroup.Key, 
           weight = (double)tagGroup.Count()/maxTagFrequencyNegative * 100 
          }; 

    var tagCloudPositive = from af in db.AgileFactors 
          join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID 
          join s in db.Stories on psf.StoryID equals s.StoryID 
          join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID 
          join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID 
          join pro in db.Projects on it.ProjectID equals pro.ProjectID 
          where pro.ProjectID == pro_id && 
           pro.ProjectID == it.ProjectID && 
           it.ProjectIterationID == pim.ProjectIterationID && 
           pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 0 && 
           s.StoryID == psf.StoryID && 
           psf.AgileFactorID == af.AgileFactorID 
          group af by af.Name into tagGroup 
          select new 
          { 

           Tag = tagGroup.Key, 
           weight = (double)tagGroup.Count()/maxTagFrequencyNegative * 100 
          }; 

    var tagCloudPositiveIteration = from af in db.AgileFactors 
            join psf in db.ProjectStoryFactors on af.AgileFactorID equals psf.AgileFactorID 
            join s in db.Stories on psf.StoryID equals s.StoryID 
            join pim in db.ProjectIterationMembers on s.ProjectIterationMemberID equals pim.ProjectIterationMemberID 
            join it in db.Iterations on pim.ProjectIterationID equals it.ProjectIterationID 
            join pro in db.Projects on it.ProjectID equals pro.ProjectID 
            where pro.ProjectID == pro_id && 
              pro.ProjectID == it.ProjectID && 
              it.ProjectIterationID == iteration_id && 
              it.ProjectIterationID == pim.ProjectIterationID && 
              pim.ProjectIterationMemberID == s.ProjectIterationMemberID && s.StoryCategoryID == 0 && 
              s.StoryID == psf.StoryID && 
              psf.AgileFactorID == af.AgileFactorID 
            group af by af.Name into tagGroup 
            select new 
            { 

             Tag = tagGroup.Key, 
             weight = (double)tagGroup.Count()/maxTagFrequencyNegative * 100 
            }; 

    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

세션으로 그런 다음 태그 클라우드 컨트롤의 세션 값을 사용하여 올바른 데이터를 바인딩하십시오. 그러나 이벤트 핸들러는 페이지 및 컨트롤의로드 이벤트 이후에 실행됩니다. 나중에 몇 가지 시점에서 바인딩 태그 클라우드 (Page_PreRender)를 제안합니다.

편집 : 당신이 다음 코드로 ASCX.CS 파일에를 Page_Load 방법을 대체해야한다고 생각 :

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

    protected void Page_PreRender(object sender, EventArgs e) 
    { 
     if (String.IsNullOrEmpty((string)Session["iteration"])) 
     { 
      iteration = "0"; 
     } 
     else 
     { 
      iteration = (string)Session["iteration"]; 
     } 

     BindTagCloud(); 
    } 
+0

안녕 올렉, 답장을 보내 주셔서 감사합니다,하지만 난 당신이 무슨 뜻인지 확실히 모르겠어요. 클라우드에 몇 가지 샘플 코드를 게시 하시겠습니까? – MiziaQ

+0

내 대답을 편집했습니다. 이것을 봐주세요. –

+0

나는 이것을 지금 며칠 동안 파악하려고 노력해왔다! 그것은 훌륭합니다, 많은 감사합니다! – MiziaQ

관련 문제