第一次做B/S的程序,还要用ASP.NET2.0,几乎什么都不熟悉~
要做的功能:
    现在要做多个仅有只读查询功能的页面,在UI层仅是收集查询条件,然后把条件组合成WHERE语句传递给BI层,BI层会根据查询条件调用其他层的操作,最后会返回对应的一个DataTable数据集,然后把这个数据集使用GridView显示在UI上即可了,很简单。问题是:
    1.如何在代码里动态把页面上的GridView控件和查询的DataTable结果集绑定到一起。
    2.GridView的列名需要自定义,而且在DataTable返回空的时候,也要显示空表和列头在页面上。
    其他分页,按列排序什么的控件都提供了~    以前从来没用过这个GridView控件,简单尝试一下感觉不是太好用,我的问题对于使用过的朋友可能只是小菜一碟,所以请适当给点代码例子。   谢谢~~~~~~~~~~~~~

解决方案 »

  1.   


                GridView1.DataSource = ds.Tables[0].DefaultView;
                GridView1.DataBind();
    2  自己写个空的datatable ,在绑定
      

  2.   

    to jc15271149:
        自定义列名呢?用实现在GridView控件里设置好吗?
      

  3.   

    在vs 2.0中,要想在Designtime能设置GridView的列格式,必须用IDataSource(如SqlDataSource等)。
      

  4.   

    gridview的作用是显示数据库,不可以自定义列名吧..
      

  5.   

    to jc15271149:
        自定义列名呢?用实现在GridView控件里设置好吗?
    ——------------------------------------------------------
    1、可以先用SqlDataSource把GridView的列先设置好,在自己动态通过
          GridView1.DataSource = ds.Tables[0].DefaultView;
                GridView1.DataBind();
       来把数据源绑定到GridView上
    2、自己写代码对GridView的Columns进行设置。
      

  6.   

    <templatestyle><headertemplate>标题</headertemplate></templatestyle>
      

  7.   

    为什么默认的分页和排序功能都不好使呢?
    提示:
    GridView“GridView1”激发了未处理的事件“PageIndexChanging”。 GridView“GridView1”激发了未处理的事件“Sorting”。
      

  8.   

    DataTable dt = new DataTable();
                    dt.Columns.Add(new DataColumn("列名"));
      

  9.   

    to jc15271149:
       关于这个问题,我刚才想直接在SQL语句里返回中文名后直接绑定就得了,那样在UI什么都不用设置。
      

  10.   

    直接在SQL语句里返回中文名后直接绑定-----------
    不建议采取这种绑定方法,不利于gridview的其他操作
      

  11.   

    dim sql as string="select语句"
    dim conn as new sqlconnection("server=localhost;database=数据库;uid=sa;pwd= ")
    dim adapter as new sqldataadapter(sql,conn)
    dim dataset as new dataset
    adapter.fill(dataset)
    gridview1.datasource=dataset.tables(0)
    gridview1.databind()
      

  12.   

    有谁知道分页和排序哪个问题怎么搞啊?刚查了一下MSDN,说是必须实现 ICollection 结构的数据集才可以自动支持分页,这个你们都是怎么做的
      

  13.   

    GridView1.DataSource = ds.Tables[0].DefaultView;
                GridView1.DataBind();
      

  14.   

    GridView1.DataSource = dt;
        GridView1.DataBind();
      

  15.   

    to lnwuyaowei(风可以追我) :
       能不能给段具体代码,谢谢!
      

  16.   

    1.如何在代码里动态把页面上的GridView控件和查询的DataTable结果集绑定到一起。
        2.GridView的列名需要自定义,而且在DataTable返回空的时候,也要显示空表和列头在页面上。
        其他分页,按列排序什么的控件都提供了~
    1.数据绑定
                dim sql as string ="……"
                Dim ds As Data.DataSet = New Data.DataSet
                Dim ad As SqlDataAdapter = New SqlDataAdapter(sql, cn)
                ad.Fill(ds, "sc_news")
                GridView1.DataSource = ds
                GridView1.DataBind()
    分页在PageIndexChanging事件里加上
            GridView1.PageIndex = e.NewPageIndex
            GridView1.DataBind()
    2.自定义列名要在aspx的设计页面中,使用girdview的编辑列功能里进行修改
    也可以手动修改,修改后aspx文件效果如下
    <…GridView……>
                <Columns>
                    <asp:BoundField DataField="绑定表列" HeaderText="标题一" />
                </Columns>
    </GridView>
      

  17.   

    ad.Fill(ds, "sc_news")里sc_news
    是我的表名,换成你的,自己起别名也行,但要容易区分,有些操作需要用
      

  18.   

    排序
        Protected Sub GridView1_Sorting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewSortEventArgs) Handles GridView1.Sorting
            Dim strFiled As String = e.SortExpression.Trim.ToString
            If ViewState("SortDirction") = "" Then
                ViewState("SortDirction") = "desc" '这个与填充gridview语句的排序相反
            Else
                If ViewState("SortDirction").ToString = "asc" Then
                    ViewState("SortDirction") = "desc"
                Else
                    ViewState("SortDirction") = "asc"
                End If
            End If
            Dim sql As String = "select * from tb_pic order by " + strFiled + " " + ViewState("SortDirction").ToString
            Dim cn As SqlConnection = New SqlConnection("data source=(local);initial catalog=wddlj;user id=sa;password=20096327")
            Dim ds As Data.DataSet = New Data.DataSet
            Dim ad As SqlDataAdapter = New SqlDataAdapter(sql, cn)
            ad.Fill(ds, "sc_news")
            GridView1.DataSource = ds
            GridView1.DataBind()
        End Sub
      

  19.   

    up 
    本人最近也在弄这个东东啊 动态绑定GridView和DataTable只需把DataTable重新绑定即可:
      GridView和DataTable绑定的代码:
              this.GridView.DataSource = dt;  //DataTable
              this.DataBind();
        如果是ds的话:
              this.GridView.DataSource = ds.Table[tablename].DefaultView
              this.DataBind();         如果查询结果后需根据一个条件把所要的数据再绑定上去的话,建设用DataView:
              代码如下:
             DataView dv = new DataView(ds.Table[tablename]);
             dv.RowFilter = "查询条件";
         dv.Sort = "字段 升序/降序";
             this.GridView.DataSource = dv;
             this.GridView.DataBind();
             
             最好少操作数据库,可以先把所需结果返回到一个ds中,然后再对ds进行操作,最后再把提交的结果返回到数据库,更新数据库剩下的问题回去再和你说吧 
        有什么不明白的加QQ 307813421 验证:GridView和DataTable绑定