2012-05-26 58 views
1

我一直在努力在單擊按鈕時在網格視圖中顯示存儲過程的結果集。使用存儲過程的結果集填充GridView

我的問題是,我正在基於3層架構的門戶現有代碼,它不允許我使用像SqlDataAdapter等東西。因爲這些功能已經通過一些以dll的形式提供的方法來加入。

我試圖返回DataTableDataSet作爲GridView控件的數據源,但徒勞無功。

請幫助我建議是否有任何可以分配給gridview的數據源的替代對象..我是新來的所有這些..任何幫助是最感謝!

這裏是我的代碼:

數據訪問層:

public IDataReader BindGridView(string rgn) 
{ 
    string spdName = "spd_get_default_region"; 
    DbCommand cmd = DB.GetStoredProcCommand(spdName); 
    DB.AddInParameter(cmd, "Rgn", DbType.String, rgn); 
    IDataReader idr = cmd.ExecuteReader(); 
    return idr; 
} 

這裏,GetStoredProcCommand是一個內置的方法。 gvAll是gridview的ID。

Grid.aspx.cs:

protected void Go_Rgn_Click(object sender, EventArgs e) 
{ 
    DAL da=new DAL(); 
    plhTable.Visible = true; 
    plhChoose.Visible = false; 
    plhForm.Visible = false; 
    string Rgn = afRgn.Text; 
    gvAll.DataSource = da.BindGridView(Rgn); 
    gvAll.DataBind(); 
} 

回答

1

一個簡單的替代方法是創建一個數據表對象。

DataTable defaultRegion = new DataTable(); 
defaultRegion.Load(cmd.ExecuteReader()); 
gvAll.DataSource = table; 
gvAll.DataBind(); 
+0

不錯..謝謝!!但是必須檢查是否允許ExecuteReader用於正在處理的解決方案.. – user1080139

+0

沒問題,如果您不能使用ExecuteReader,您將不得不找出一種方法來修改爲DLL創建的現有數據訪問,或者使用完全不同的方法,如LinqToSQL或實體框架。在某些層次上,所有的方法都必須在基本級別執行SQL。 – Turnkey

相關問題