none
怎样建立一个多表的实时刷新 RRS feed

  • 问题

  • 我现在想要做个在一个页面,显示多表数据的时候刷新页面

    每个表的列数不相同,而且每个表的表名还有列名都是都太添加的!

    应该怎样做?

    2009年3月23日 7:03

答案

  • 做一个循环就可以了啊
    for(int i = 0;i<10;i++)
    {
      ds = 取数据省略。
      string G = "GridView" + i.ToString();
      GridView dv = this.form1.FindControl(G) as GridView ;
      dv.DataSource = ds.Tables[0];
      dv.DataBind();
    }

    孟宪会
    2009年3月23日 9:43
    版主

全部回复

  • 页面上做法一般就是ajax,至于取什么表,什么字段的数据,你传递过去就可以了
    孟宪会
    2009年3月23日 8:16
    版主
  • 具体需求没有清楚,可以给你一些建议,根据用户的选择,生成动态的Sql然后将结果集直接送入GirdView或者其他数据展示控件
    2009年3月23日 9:30
  •   protected void v()
        {
            string sqlstr2;
            string[] aid = new string[20];
            int j = 0;
            sqlstr2 = "select e_name from e_station";
            conn = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["key"]);
            conn.Open();
            SqlDataAdapter sda2 = new SqlDataAdapter(sqlstr2, conn);
            DataSet ds2 = new DataSet();
            sda2.Fill(ds2);
            for (int i = 0; i < ds2.Tables[0].Rows.Count; i++)
            {
                aid[i] = ds2.Tables[0].Rows[i]["e_name"].ToString();
                j = i;
            }
            for (int k = 0; k <= j; k++)
            {
                string tableName1 = "z_" + aid[k];
                string strsl = "select * from " + tableName1 + "";
                SqlDataAdapter p = new SqlDataAdapter(strsl, conn);
                DataSet ds = new DataSet();
                p.Fill(ds.Tables[0]);
                GridView1.DataSource = ds.Tables[0];
                GridView1.DataBind();
            }
    你看我这段代码,我想法是,先用sqlstr2搜索表明所在的列,然后根据搜索到的表名,在执行查询,最后把每个表查询的结果放在一个GridView,我在页面上放了10个GridView,每个查询放一个,我想在就不知道怎么分别查询的,分别赋给GridView,你见过新浪NBA比分直播那个页面?就是想要那种效果!
    2009年3月23日 9:32
  • 做一个循环就可以了啊
    for(int i = 0;i<10;i++)
    {
      ds = 取数据省略。
      string G = "GridView" + i.ToString();
      GridView dv = this.form1.FindControl(G) as GridView ;
      dv.DataSource = ds.Tables[0];
      dv.DataBind();
    }

    孟宪会
    2009年3月23日 9:43
    版主
  • 谢谢大哥,这种发发果然奏效,
    string G = "GridView" + i.ToString();
    GridView dv = this.form1.FindControl(G) as GridView
    我不明白这两句话是什么意思i.ToString();和 this.form1.FindControl(G) as GridView
    还有为什么
    dv.DataSource = ds.Tables[0];这么写说我ds没引用实例呢!
    我把Tables[0]去掉就好了!为什么
    2009年3月23日 10:22
  • i.ToSting()的意思是将i转换成string类型,其实也可以直接这样写"GridView" + i,这样的目的是为了获取GirdView的ID,利用 this.form1.FindControl(G) as GridView找到这个这个控件并且转换成GirdView。
    2009年3月23日 12:31
  •  this.form1.FindControl(G) as GridView就是通过字符串找到对象,当然,你这么写也是可以的
    for(int i = 0;i<10;i++)
    {
      ds = 取数据省略。
      string G = "GridView" + i.ToString();
    if(i==0){

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


    if(i==1){

    GridView2.DataSource = ds.Tables[0];
      GridView2.DataBind();
    }
    ....
    }

    但这样写很麻烦

    孟宪会
    2009年3月23日 13:27
    版主