2012-08-30 5 views
0

나는 linq에서 sql 파일로 데이터를 채우고 싶은 gridview를 가지고있다.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 대신 Control으로 입력 매개 변수를 선언하는 이유는 무엇입니까 – Vamsi

+0

__ (문자열 테이블, GridView GridView) __과 __ (s tring 테이블, Control GridView) __? – xRed

+1

@xRed 컨트롤로 사용하면 더 아래로 캐스팅해야합니다 (GridView와 같은 GridView). - 기존의 목적으로 암시 적으로 입력하려면 (문자열 테이블, 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(); 
} 

을하지만 내가 SQL에 LINQ 정확한 반대를하고 있지만 ... 당신은 문자열로 객체를 연결하는 것이 좋습니다 것이 아닙니다 ...

글쎄 ... 코드를 테스트하지 않았고 컴파일하지 못할 수도 있습니다 ... 이것은 단지 아이디어를 얻는 것입니다.

+0

컴파일시 다음 오류가 발생합니다. __ 암시 적으로 'object'유형을 'System.Linq.IQueryable'로 변환 할 수 없습니다. 명시 적 변환이 존재합니다 (캐스트가 누락 되었습니까?) __ – xRed

+0

실제로 캐스트가 응답을 업데이트했습니다 – Kek

+0

Thats sir, 정말 효과가있었습니다 :) – 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

그것을 시도

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

InformitoDataContext

의 생성자에서 연결 문자열을 전달합니다.

+0

@mitali, 문제가 아닌 문자로 구분됩니다. 그것의 기능이 아니라 연결합니다. – xRed