【问题标题】:How to get the datasource of a gridview如何获取gridview的数据源
【发布时间】:2010-01-06 12:06:33
【问题描述】:

我正在使用带有 sqldatasource 的 gridview。如何将代码隐藏中的数据源作为数据表取回?

【问题讨论】:

    标签: c# gridview sqldatasource


    【解决方案1】:

    使用 System.Data.DataTable dt = (System.Data.DataTable)gview.DataSource;如果您要绑定 DataTable。

    如果您将 DataSet 绑定为 System.Data.DataTable dt2 = (System.Data.DataTable)((System.Data.DataSet)gvValidDA.DataSource).Tables[0];您必须根据需要检查表的索引或表名。

    编码愉快。

    【讨论】:

      【解决方案2】:

      已编辑

      使用SqlDataSource.Select 方法并将其分配给数据视图

      DataView dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
      

      然后使用提取数据表

      DataTable dt =  (DataTable)dv.ToTable();
      

      【讨论】:

        【解决方案3】:

        与上述答案相关,实际数据并未存储在 Gridview 属性中。

        使用直接转换为 Gridview.DataSource 是不够的,因为当 gridview 渲染时它实际上是 NULL!

        您必须直接从 SQL 数据源重新加载数据...

                DataSourceSelectArguments dss = new DataSourceSelectArguments();
                DataView dvS = sdsADDorREMstudentData.Select(dss) as DataView;
                DataTable dtS = dvS.ToTable() as DataTable;
                if (dtS != null)
                {
                  ... etc...
                }
        

        或者您可以使用 ViewState 在 Gridview 呈现之前保留数据。

            DataView dvClasses = (DataView)sdsClasses.Select(DataSourceSelectArguments.Empty);
        
            gvStudents.DataSourceID = "sdsClasses";
            gvStudents.DataSource = null; // Null out the source, as we have a SourceID instead
            gvStudents.DataBind();
        
            //save the data in a viewstate for later use (to control adding and removing students, without doing a postback! See ADD & REM methods below)
            DataView dv = (DataView)dvClasses;
            DataTable dt = new DataTable();
            if (dv != null)
            {
                dt = dv.ToTable();
                ViewState["gv"] = dt;
            }
        

        并使用 ViewState 将其转回 DataTable,当您需要在 Gridview 渲染后使用数据时...

        DataTable dt = (DataTable)ViewState["gv"];
        

        【讨论】:

          猜你喜欢
          • 2011-07-07
          • 2015-05-28
          • 1970-01-01
          • 2013-07-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-09-29
          • 1970-01-01
          相关资源
          最近更新 更多