2011-08-11 26 views
1

ドロップダウンボックスでフィルタリングされたグリッドビューがあります。グリッドビューには、データを表示するためのModalPopUpExtenderを呼び出すLinkBut​​tonがあります。グリッドビューがフィルタされ、LinkBut​​tonがクリックされると、GridViewのフィルタ結果が変更され、データが正しく表示されません。Gridviewフィルタの結果がModalPopUpExtenderの呼び出し後に変更される

<asp:DropDownList ID="ddl_temp" runat="server" AutoPostBack="True" 
        onselectedindexchanged="ddl_temp_SelectedIndexChanged"> 
        <asp:ListItem>Select Status</asp:ListItem> 
        <asp:ListItem>Open</asp:ListItem> 
        <asp:ListItem>Closed</asp:ListItem> 
       </asp:DropDownList> 
protected void tabs() 
{ 
.... 
sds.FilterParameters.Clear(); 
     sds.SelectParameters.Clear(); 
     ControlParameter cp = new ControlParameter(); 
      cp.ControlID = ddl_temp.ID.ToString(); 
      cp.PropertyName = "SelectedValue"; 
      cp.Name = "Status"; 
      cp.Type = TypeCode.String; 
      cp.ConvertEmptyStringToNull = false; 
      sds.FilterParameters.Add(cp);   
      sds.ID = "sds1"; 
      sds.SelectParameters.Add("sid", sid); 
      IssuesPanel.Controls.Add(sds); 

     BoundField date = new BoundField(); 
      date.HeaderText = "Date"; 
      date.DataField = dt.Columns[2].ToString(); 
      date.SortExpression = dt.Columns[2].ToString(); 

     BoundColumn bc = new BoundColumn(); 
     bc.DataField = dt.Columns[2].ToString(); 

     BoundField status = new BoundField(); 
      status.HeaderText = "Status"; 
      status.DataField = dt.Columns[3].ToString(); 

     gv4 = new GridView(); 
      gv4.DataSource = sds; 
      gv4.RowDataBound += gv4_RowCommand; 
      gv4.Columns.Add(date); 
      gv4.Columns.Add(status); 
      gv4.CellPadding = 6; 
      gv4.AutoGenerateColumns = false; 
      //gv4.AllowSorting = true; 
      gv4.AllowPaging = true; 
      gv4.DataBind();    
     IssuesPanel.Controls.Add(gv4); 
... 
} 



protected void gv4_RowCommand(object sender, GridViewRowEventArgs e) 
    { 
     if (e.Row.RowType == DataControlRowType.DataRow) 
     { 
      LinkButton lb = new LinkButton(); 
      lb.Text = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Title")); 
      lb.ID = Convert.ToString(DataBinder.Eval(e.Row.DataItem, "Issue_ID")); 
      lb.Click += new EventHandler(issueModal); 
      e.Row.Cells[0].Controls.Add(lb); 

     } 

    } 

protected void ddl_temp_SelectedIndexChanged(object sender, EventArgs e) 
    { 


      sds.FilterParameters.Clear(); 
      ControlParameter cp = new ControlParameter(); 
      cp.ControlID = ddl_temp.ID.ToString(); 
      cp.PropertyName = "SelectedValue"; 
      cp.Name = "Status"; 
      cp.Type = TypeCode.String; 
      cp.ConvertEmptyStringToNull = false; 
      sds.FilterParameters.Add(cp); 
      sds.FilterExpression = "Status='{0}'"; 
       gv4.DataSource = sds; 
       gv4.DataBind(); 

    } 
+0

は、このwinformsまたはasp.net webformsですか?あなたはより具体的にする必要があります – Martin

+0

それはasp.net webform – Kianna

+0

ですので、より具体的になるように質問にタグを付けてください – Martin

答えて

1

を私はLinkBut​​tonコントロールをクリックするたびに、それは再ロードするので、私はこの問題を解決する方法は、セッション変数にFilterExpressionを節約し、Page_Loadの上でそれを割り当てることによってでしたページ。

ありがとうございました。

1

ページライフサイクルのどの段階でこれが起こっていますか?小さなスニペットから何が起こっているのかを知るのは難しいです。もう少し文脈が必要です。

あなたはこれでフィルタリングあなたのドロップダウンを包むみました:

if (!Page.IsPostBack) 
{ 
    //dropdown filtering here 
} 
+0

私は、if文でフィルタリングをラップしようとし、ドロップダウンが選択されているときにgridviewがフィルタリングしません。また、より多くのコードが質問に追加されました。ありがとう。 – Kianna

関連する問題