我有一个gridview,我想填充从linq到sql文件的数据。
我尝试创建一个函数,用一个字符串填充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);
}
我该如何解决这个问题?
答案 0 :(得分:1)
在InformitoDataContext的构造函数中传递连接字符串
string str= /*connection string*/
InformitoDataContext db = new InformitoDataContext(str);
试一试。
答案 1 :(得分: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到SQL正好相反......
嗯......我没有测试代码,它可能无法编译......这只是为了得到这个想法
答案 2 :(得分:0)
首先,你应该在变量的开头删除大写:
public void FillGridView(string table, GridView gridView)
{
var ds = from q in table;
select q;
gridView.DataSource = ds;
gridView.DataBind();
}