大虾们,请教一个ASP.NET 的菜鸟问题:代码如下://读取Excel按钮
        protected void btnOpen_Click(object sender, EventArgs e)
        {
            string strFileType = System.IO.Path.GetExtension(ocUpload.FileName);
            if (strFileType.Equals(".xls"))
            {
                ExceltoOracle excel = new ExceltoOracle();
                dgShow.DataSource = excel.import_Excel(ocUpload.PostedFile.FileName, desName[0].ToString());
                dgShow.DataBind();
            }
        }//提交按钮
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            try
            {
                DataAccessOC oc = new DataAccessOC();
                oc.Insert(dgShow.DataSource as DataTable);        }
//类
        public void Insert(DataTable table)
        {
            .....
        }
步骤:1、先执行“读取EXCEL按钮”事件,EXCEL表中的数据成功绑定在DataGrid中;
      2、点击“提交按钮”事件,将DataGrid中的数据更新到SQL数据库中。问题:当调用Insert()函数时,所传递的DataTable却为空,请问如何将DataGrid转换为DataTable并传到Insert()函数中?

解决方案 »

  1.   

    DataTable本身也是数据源,不用转直接附给dgShow.DataSource 
      

  2.   

    将Data Table赋给dgshow.datasource没问题。但将dgShow 的数据,以DataTable的形式传出去,这个不行。我现在想将dgShow 的数据以DataTable的形式传到Insert()函数中,但传出去的结果为Null.
      

  3.   

    页面回发后 dgShow.DataSource  就为null你将 dgShow.DataSource 放入缓存,或者将相关的条件保存然后需要时 重新调用  excel.import_Excel 方法 获取相关数据源
      

  4.   

    哈哈,Sandy945果然有经验的高手。成功了。//放入缓存
    set.Tables.Add((DataTable)dgShow.DataSource);
    HttpContext.Current.Cache.Insert("dgSet", set);//读取缓存(调用函数时,作参数传递)
    oc.Insert(set.Tables[0]);