如何在GridView 标头放DropDownList,选择显示不同的列? 

解决方案 »

  1.   

    建模板列。。把DropDownList拖进去么
      

  2.   

    一定要放在GridView 标头嗎?就放在GridView 上面不行嗎?
      

  3.   

    后台在rowdatabound中,也可以访问到gridview的head row,可以动态增删他的子控件
      

  4.   

    标头。。
    在RowDataBound中//如果是标头
    if (e.Row.RowType == DataControlRowType.Header)
    {
      e.Row.Cells[0].Text = "<select><option>请选择</option></select>";//在第一列放入一个下来菜单
    }
      

  5.   

    做过两个gridview嵌套的东西,建议不要放在 页眉或页脚上。涉及到页面回发与事件的问题
      

  6.   

    http://topic.csdn.net/t/20060420/10/4700258.html
      

  7.   

    放表格上面,然后把GridView的ShowHeader设为false就行了,道理是一样的。
    至于显示不同的列?
    这个可以使用DropDownList将列名作为参数传递到GridView控件使用的数据源,提取相应信息即可。
      

  8.   

    表头加入DropDownList参考:  <%@   Page   Language="C#"   AutoEventWireup="true"   CodeFile="Default.aspx.cs"   Inherits="Samples_Default"   %>   
        
      <!DOCTYPE   html   PUBLIC   "-//W3C//DTD   XHTML   1.0   Transitional//EN"   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">   
        
      <html   xmlns="http://www.w3.org/1999/xhtml"   >   
      <head   runat="server">   
              <title>无标题页</title>   
              <script   language="javascript"   type="text/javascript">   
              function   test(ddlst)   
              {   
                      var   selectedType   =   ddlst.value;   
                      var   gridTable   =   document.getElementById("GridView1")   
                      var   i;   
                      for(i=1;i<gridTable.rows.length;i++)   
                      {   
                              var   curRow   =   gridTable.rows[i];   
                              var   curType   =   curRow.cells[1].innerText;   
                              if(curType   ==   selectedType   ||   selectedType   ==   "ALL")   
                                      curRow.style.display   =   "inline";   
                              else   
                                      curRow.style.display   =   "none";   
                      }   
              }   
              </script>   
      </head>   
      <body>   
              <form   id="form1"   runat="server">   
              <div>   
                      <asp:GridView   ID="GridView1"   runat="server"   AutoGenerateColumns="False"   OnRowCreated="GridView1_RowCreated">   
                              <Columns>   
                                      <asp:BoundField   DataField="field1"   HeaderText="id"   ReadOnly="True"   SortExpression="field1"   />   
                                      <asp:TemplateField>   
                                              <HeaderTemplate>   
                                                      <asp:DropDownList   ID="DropDownList1"   runat="server"   Width="87px"   >   
                                                              <asp:ListItem   Value="ALL">ALL</asp:ListItem>   
                                                              <asp:ListItem>AAA</asp:ListItem>   
                                                              <asp:ListItem>BBB</asp:ListItem>   
                                                              <asp:ListItem>CCC</asp:ListItem>   
                                                      </asp:DropDownList>   
                                              </HeaderTemplate>   
                                              <ItemTemplate><%#   Eval("field2")%></ItemTemplate>   
        
                                      </asp:TemplateField>   
                                      <asp:BoundField   DataField="field3"   HeaderText="re"   ReadOnly="True"   SortExpression="field3"   />   
                              </Columns>   
                      </asp:GridView>   
                        
              </div>   
              </form>   
      </body>   
      </html>   
      ==============   
        
      public   partial   class   Samples_Default   :   System.Web.UI.Page   
      {   
              protected   void   Page_Load(object   sender,   EventArgs   e)   
              {   
                      if   (!IsPostBack)   
                      {   
                              BindData();   
                      }   
              }   
        
              private   void   BindData()//这里只是模拟一些测试数据   
              {   
                      DataTable   dt   =   new   DataTable();   
                      dt.Columns.Add("Field1");   
                      dt.Columns.Add("Field2");   
                      dt.Columns.Add("Field3");   
                      System.Random   rd   =   new   Random();   
                      for   (int   i   =   1;   i   <   30;   i++)   
                      {   
                              int   tmp   =   rd.Next(99999);   
                              int   rem   =   0;   
                              Math.DivRem(tmp,   3,   out   rem);   
                              if(rem   ==   0)   dt.Rows.Add(new   object[]   {   i,"AAA",tmp});   
                              else   if   (rem   ==   1)   dt.Rows.Add(new   object[]   {   i,   "BBB",   tmp   });   
                              else   if   (rem   ==   2)   dt.Rows.Add(new   object[]   {   i,   "CCC",   tmp   });   
                      }   
                      dt.AcceptChanges();   
                      this.GridView1.DataSource   =   dt;   
                      this.GridView1.DataBind();   
              }   
              protected   void   GridView1_RowCreated(object   sender,   GridViewRowEventArgs   e)   
              {   
                      if   (e.Row.RowType   ==   DataControlRowType.Header)   
                      {   
                              DropDownList   ddlst   =   e.Row.FindControl("DropDownList1")   as   DropDownList;   
                              ddlst.Attributes.Add("onchange","test(this);");   
                      }   
              }   
      }   
        
      ***********************************   
      如果有翻页,例如一共有100条数据,每页显示20条,耍选时希望每页也显示20条符合条件的数据,那么更简单,这样写就可以了   
      <asp:TemplateField>   
                                              <HeaderTemplate>   
                                                      <asp:DropDownList   ID="DropDownList1"   runat="server"   Width="87px"   AutoPostBack="True"   >   
                                                              <asp:ListItem   Value="ALL">ALL</asp:ListItem>   
                                                              <asp:ListItem>AAA</asp:ListItem>   
                                                              <asp:ListItem>BBB</asp:ListItem>   
                                                              <asp:ListItem>CCC</asp:ListItem>   
                                                      </asp:DropDownList>   
                                              </HeaderTemplate>   
                                              <ItemTemplate><%#   Eval("field2")%></ItemTemplate>                                 </asp:TemplateField>  
       
     protected   void   GridView1_RowCreated(object   sender,   GridViewRowEventArgs   e)   
              {   
                      if   (e.Row.RowType   ==   DataControlRowType.Header)   
                      {   
                              DropDownList   ddlst   =   e.Row.FindControl("DropDownList1")   as   DropDownList;   
                              ddlst.Attributes.Add("onchange","test(this);");   
                              ddlst.SelectedIndexChanged   +=   new   EventHandler(ddlst_SelectedIndexChanged);   
                      }   
              }   
        
              void   ddlst_SelectedIndexChanged(object   sender,   EventArgs   e)   
              {   
                      //在这里对数据源进行筛选并且重新绑定到GridView1   
              }
      

  9.   

    DropDownList放上了,不知道怎么取值
      

  10.   

     <asp:TemplateField>
                       <HeaderTemplate>
                           <asp:DropDownList ID="DropDownList1" runat="server" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" AutoPostBack="True">
                               <asp:ListItem Value="u_update">更新日期</asp:ListItem>
                               <asp:ListItem Value="u_regtime">注册日期</asp:ListItem>
                           </asp:DropDownList>
                       </HeaderTemplate>
                       <ItemTemplate>
                   
                       </ItemTemplate>
                   </asp:TemplateField>
      

  11.   

    DropDownList1_SelectedIndexChanged里用((DropDownList)sender).SelectedValue.ToString()可以取,可不可以在外面取?
      

  12.   

    用ViewState保存DropDownList1的值,但是一变改DropDownList1的时候,重新剧新GridView,DropDownList1无法显示到原来的值
      

  13.   

    你应该多搜索一下再过来问,这样的交流成本很高。www.google.com