环境:c#+sql.
存储过程importdata 生成如下结果集:
型号 2/1/2012 3/1/2012 4/1/2012 5/1/2012
AAA 200 456 564 342
BBB 300 432 589 456
CCC 345 124 899 765
DDD 342 453 543 342除了字段“型号”外,其他日期字段都是根据其他表动态生成,所以日期和字段个数也不定(最少三个日期字段,最多6个)。
想把上面结果集在gridview显示出来,通过gridview界面邦定的话,因为日期字段不确定,所以不可行。想通过代码绑定的话
该如何做?显示格式要求和结果集一致。
请大家帮忙,提供代码,谢谢。

解决方案 »

  1.   

    先动态创建Datatable,然后再绑定
      

  2.   

    不能用select * . 因为除了型号和日期字段外,还有其他一些字段,不想全要阿。
      

  3.   


    和Select什么关系?先new一个Datatable,然后筛选你查询的数据逐行、逐列加入这个Datatable,然后对gridview进行绑定
      

  4.   

    关键是2/1/2012,3/1/2012/,4/1/2012这些字段名每次都不一样啊,是根据其他表动态生成的,我用select 怎么筛选阿。
      

  5.   

    或者如果我用select * 把所有字段不管需要不需要的都加入到datatable中,然后gridview bind().怎样再从gridview中把不需要的列删掉呢?
      

  6.   

    比如如下字段:
    型号
    1/1/2012
    2/1/2012
    3/1/2012
    厂家
    价格
    共六个字段,其中三个字段为日期的是每次不确定的,有可能个数不定(3-6个),有可能日期不定(也可呢个是8/1/2012)。如果我只要型号,1/1/2012,2/1/2012,3/1/2012,而不要厂家和价格,我该如何读到datatable中?如果用sql='select 型号,1/1/2012,2/1/2012,3/1/2012'显然如果日期变了,就会出错。
      

  7.   

    http://blog.csdn.net/gdqihua/article/details/2060598看看这篇文章吧
      

  8.   


    页面代码:
        <form id="form1" runat="server">
        <div>
        
            <asp:GridView ID="GridView1" runat="server">
            </asp:GridView>
        
        </div>
        </form>
    后台代码:Partial Class manage_test
        Inherits System.Web.UI.Page    Private Sub LoadData()
            Dim _db As New RedPalace.Tools.DBHelp.ConnMSSQL
            Dim dt1 As Data.DataTable = _db.DataTable("SELECT * FROM [T1]") '第一个表(假设有字段A,B,C)
            Dim dt2 As Data.DataTable = _db.DataTable("SELECT * FROM [T2]") '第一个表(假设有字段D,E,F)
            '假设我们要组合A,C,E字段呈现
            Dim _dt As New Data.DataTable
            Dim coll1 As Data.DataColumn = _dt.Columns.Add("呈现A", GetType(String))
            Dim coll2 As Data.DataColumn = _dt.Columns.Add("呈现C", GetType(String))
            Dim coll3 As Data.DataColumn = _dt.Columns.Add("呈现E", GetType(String))
            Dim dr As Data.DataRow
            For i As Integer = 0 To dt1.Rows.Count - 1
                dr = _dt.NewRow()
                dr("呈现A") = dt1.Rows(i)("A")
                dr("呈现C") = dt1.Rows(i)("C")
                dr("呈现E") = dt2.Rows(i)("E")
                _dt.Rows.Add(dr)
            Next
            '我是假设你的数据表1和2是一样的行数,各种逻辑错误处理及筛选方案自行编写
            GridView1.DataSource = _dt
            GridView1.DataBind()
        End Sub    Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
            LoadData()
        End Sub
    End Class
    数据表代码CREATE TABLE [T1](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [A] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [B] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [C] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
     CONSTRAINT [PK_T1] PRIMARY KEY CLUSTERED 
    (
    [id] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]CREATE TABLE [T2](
    [id] [int] IDENTITY(1,1) NOT NULL,
    [D] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [E] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
    [F] [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,
     CONSTRAINT [PK_T2] PRIMARY KEY CLUSTERED 
    (
    [id] ASC
    )WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
    ) ON [PRIMARY]GO