日期:2014-05-17  浏览次数:20437 次

DataTable dt =(DataTable) this.gridview.DataSource怎么是null值
平时都是
DataTable dt=....;//从数据库获取数据
this.gridview.datasource=dt;//把它绑定到gridview中。



现在我想应该能倒过来吧!DataTable dt =(DataTable) this.gridview.DataSource;; 但是在程序中运行时,dt是null值哦!
请问高手这是为什么?

------解决方案--------------------
this.gridview.datasource=dt;//把它绑定到gridview中。
this.gridview.DataBind();

若是在代码中,紧随其后
就调用DataTable dt =(DataTable) this.gridview.DataSource;
是可以得到dt的

但一旦页面刷新后,
gridview,都是重新输出的
this.gridview.DataSource 自然也就没有了

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



DataTable dt =(DataTable)ViewState["d"]
------解决方案--------------------
引用:
DataTable dt=....;//从数据库获取数据
this.gridview.datasource=dt;
ViewState["d"] = dt;



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

ViewState不可以存datatable!他会序列化!
------解决方案--------------------
引用:
DataTable dt=....;//从数据库获取数据
this.gridview.datasource=dt;
ViewState["d"] = dt;



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

+1
那样取值是没有数据的
------解决方案--------------------
循环去出gridview里面的值
------解决方案--------------------
可以的
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());
    }

------解决方案--------------------
加上ispostback条件估计就不行了
------解决方案--------------------
这个问题我也遇到过,直接写gridview.DataSource肯定为空,就加载的时候把控件赋值了。要不然的话就封装一个方法,然后用的时候调用!
------解决方案--------------------
引用:
this.gridview.DataBind();

这个是强制刷新一次。
------解决方案------------