平时都是
DataTable dt=....;//从数据库获取数据
this.gridview.datasource=dt;//把它绑定到gridview中。现在我想应该能倒过来吧!DataTable dt =(DataTable) this.gridview.DataSource;; 但是在程序中运行时,dt是null值哦!
请问高手这是为什么?

解决方案 »

  1.   

    this.gridview.datasource=dt;//把它绑定到gridview中。
    this.gridview.DataBind();若是在代码中,紧随其后
    就调用DataTable dt =(DataTable) this.gridview.DataSource;
    是可以得到dt的但一旦页面刷新后,
    gridview,都是重新输出的
    this.gridview.DataSource 自然也就没有了
      

  2.   

    DataTable dt=....;//从数据库获取数据
    this.gridview.datasource=dt;
    ViewState["d"] = dt;

    DataTable dt =(DataTable)ViewState["d"]
      

  3.   

    ViewState不可以存datatable!他会序列化!
      

  4.   

    把你的DT存成XML 然后输出到LABEL控件里...
      

  5.   

    可以的
    protected void Page_Load(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            dt.Columns.Add("Name");
            dt.Rows.Add(new object[] { "A" });
            dt.Rows.Add(new object[] { "B" });
            this.GridView1.DataSource = dt;
            this.GridView1.DataBind();
        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            DataTable dtb = new DataTable();
            dtb = this.GridView1.DataSource as DataTable;
            Response.Write(dtb.Rows[0][0].ToString());
        }
      

  6.   

    加上ispostback条件估计就不行了
      

  7.   

    这个问题我也遇到过,直接写gridview.DataSource肯定为空,就加载的时候把控件赋值了。要不然的话就封装一个方法,然后用的时候调用!
      

  8.   

    将数据源封装成object类型的属性,GridView数据绑定后接着给该属性赋值用的时候再类型转换DataTable就可以我试过