簡體   English   中英

如何獲取GridView的數據源

[英]How to get the datasource of a gridview

我正在使用帶有sqldatasource的gridview。 如何獲取代碼背后的數據源作為數據表?

使用System.Data.DataTable dt =(System.Data.DataTable)gview.DataSource; 如果要綁定數據表。

如果將DataSet綁定為System.Data.DataTable,甚至可以從DataSet中提取DataTable dt2 =(System.Data.DataTable)((System.Data.DataSet)gvValidDA.DataSource).Tables [0]; 您將需要根據需要檢查表或表名稱的索引。

快樂的編碼。

已編輯

使用SqlDataSource.Select方法並將其分配給數據視圖

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

然后使用提取數據表

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

實際數據未存儲在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;
    }

並在需要使用Gridview呈現后的數據時,使用ViewState將其轉換回DataTable。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM