2012-08-30 58 views
0

我有一個gridview,我想填充從我的linq到sql文件的數據。C#使用函數填充GridView

我試圖創建一個函數來填充一個字符串表格名稱的GridView。

InformitoDataContext db = new InformitoDataContext(); 

    public void FillGridView(string Table, Control GridView) 
    { 
     var ds = from q 
       in db.Table //Error in db.Table: 'InformitoDataContext' does not contain a definition for 'Table' 
       select q; 
     (GridView as GridView).DataSource = ds; 
     (GridView as GridView).DataBind(); 
    } 

,它應該是這樣工作:

public void Page_Load(object sender, EventArgs e) 
{ 
    Data.FillGridView("news", GridView1); 
} 

我怎樣才能解決這個問題呢?

+1

當你知道它是一個gridview,爲什麼你聲明輸入參數爲控件而不是GridView – Vamsi

+0

很奇怪__(字符串表,GridView GridView)__和__(s特林表,控制GridView)__? – xRed

+1

@xRed當你把它作爲控件時,你必須進一步向下轉換(GridView作爲GridView) - 爲了傳統的目的並且使它隱式地改變參數到(string table,GridView gv)然後gv.DataSource = ds;等等 – LukeHennerley

回答

1

您可以嘗試使用反射:

public void FillGridView(string Table, Control GridView) 
{ 
    var property = typeof(InformitoDataContext).GetProperty(Table); 
    IQueryable query = (IQueryable)(property.GetGetMethod().Invoke(db, new object[0])); 
    (GridView as GridView).DataSource = query; 
    (GridView as GridView).DataBind(); 
} 

但是,這是不是我會建議...您鏈接對象的字符串雖然LINQ to SQL的是做完全相反的東西......

那麼...我沒有測試代碼,它可能不會編譯...這只是爲了得到這個想法

+0

編譯時它給這個錯誤:__Cannot隱式轉換類型「對象」到「System.Linq.IQueryable」。一個顯式轉換存在(是否缺少強制轉換?)__ – xRed

+0

我更新,以實際投 – Kek

+0

那先生的答案,它的工作,真的apreciate它:) – xRed

0

首先,你應該在你的變量的開頭刪除大寫:

public void FillGridView(string table, GridView gridView) 
    { 
     var ds = from q in table; 
     select q; 
     gridView.DataSource = ds; 
     gridView.DataBind(); 
    } 
+0

是嗎?這將如何解決這個問題? xRed的編碼規則可能與您的不同。他們不僅僅因爲這個原因 – Kek

+0

這並不能解決我的問題。它只是用我輸入的字符串創建一個gridview,用字符分隔 – xRed

1

通過在連接字符串中InformitoDataContext

string str= /*connection string*/ 
InformitoDataContext db = new InformitoDataContext(str); 

的構造試試吧。

+0

@mitali,那不是問題。它的功能,而不是連接。 – xRed