0

linq から sql ファイルにデータを入力したいグリッドビューがあります。

テーブル名である文字列でグリッドビューを埋める関数を作成しようとしました。

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);
}

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

1

InformitoDataContext のコンストラクターで接続文字列を渡します

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

それを試してみてください。

于 2012-08-30T12:53:01.963 に答える
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は正反対のことをしています...

ええと...私はコードをテストしていません。コンパイルできない可能性があります...これはアイデアを得るためのものです

于 2012-08-30T12:53:55.207 に答える
0

まず、変数の先頭で大文字を削除する必要があります。

public void FillGridView(string table, GridView gridView) 
    {
        var ds = from q in table;
        select q;
        gridView.DataSource = ds;
        gridView.DataBind();
    }
于 2012-08-30T12:52:05.583 に答える