Linq中使用反射实现--LINQ通用数据表绑定DataGrid控件的方法(原创)
项目需求,因为项目中存在很多表,这些表的内容需要呈现给客户浏览.转载请注明出处
相信很多写过程序的设计者很容易的用以下方式实现
在SqlConnect ,DataSet 的方式,我们很轻松的可以通过Sql的字符变化来实现单表动态查询
string sTableName="Dep"; string connectionstr="连接字符串"; Sql ="select * from "+sTableName; SqlConnection conn=new SqlConnection(); conn.ConnectionString = _ConnectionString; conn.open(); SqlDataAdapter adapter=new SqlDataAdapter(sql,conn); DataSet ds=new DataSet(); adapter.Fill(ds); //绑定数据 this.GridControl.DataSource=ds.Tables[]; ....
以上都是书本上很经典的范例,我就不详细列出
在开发Linq项目过程中,需要对一个表的数据进行查询,通常Linq的语法一般是这样:
DataClass1DataContext context=new DataClass1DataContext(); System .Data.Linq.Table<Dep> dt=context.GetTable<dep>();//重复写这句 //绑定数据 this.GridControl.DataSource=dt;
按照上面的做法.每次使用不用的表,我们必须重复的写以上的代码,从软件设计的角度出发,这些很多时候是无用的操作.
经过不断地测试,通过反射的方法可以实现动态表查询
如果表名发生变化,则我们不能直接实现<TableName>来实现
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void simpleButton1_Click(object sender, EventArgs e)
{
getLinqCommonTable("DepartmentShip"); getLinqCommonTable("DepartmentShip"," OID=2");
} /// <summary>
/// 通过动态字符串获取单表数据
/// </summary>
private void getLinqCommonTable(string sTableName)
{
ArrayList list = new ArrayList();
DataClasses1DataContext Context = new DataClasses1DataContext();
string sNamespace = new DataClasses1DataContext().GetType().Namespace;
Type t = Type.GetType(String.Format("{0}.{1}", sNamespace, sTableName), true, true);
var temp = Activator.CreateInstance(t); var q = Context.ExecuteQuery(typeof(DepartmentShip), "select * from DepartmentShip");
foreach (object c in q)
{
list.Add(c);
Console.WriteLine(c);
}
gridControl1.DataSource = list;
gridControl1.Refresh();
}
/// <summary>
/// 通过动态字符串获取单表数据
/// </summary>
private void getLinqCommonTable(string sTableName,string condition)
{
ArrayList list = new ArrayList();
DataClasses1DataContext Context = new DataClasses1DataContext();
string sNamespace = new DataClasses1DataContext().GetType().Namespace;
Type t = Type.GetType(String.Format("{0}.{1}", sNamespace, sTableName), true, true);
var temp = Activator.CreateInstance(t);
var q = Context.ExecuteQuery(temp.GetType(), "select * from DepartmentShip where "+condition);
foreach (object c in q)
{
list.Add(c);
Console.WriteLine(c);
}
gridControl1.DataSource = list;
gridControl1.Refresh();
} }
通过上述代码我们可以实现LINQ单表通过查询方法
Linq中使用反射实现--LINQ通用数据表绑定DataGrid控件的方法(原创)的更多相关文章
- 通用数据水平层级选择控件v0.70升级版使其支持jQuery v1.9.1
升级原因:作者原来脚本支持的jquery版本太低了,查找了下资料,使得它能支持最新版本的jquery 备注说明:脚本代码源作者跟源文出处很难找,只能在此特感谢他的分享. 更新部分: 1.新版本不再支持 ...
- 孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数
孤荷凌寒自学python第四十九天继续研究跨不同类型数据库的通用数据表操作函数 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 今天继续建构自感觉用起来顺手些的自定义模块和类的代码. 不同类型 ...
- Activiti工作流框架学习(一)之通用数据表详细介绍
文/朱季谦 Activiti工作流引擎自带了一套数据库表,这里面有一个需要注意的地方: 低于5.6.4的MySQL版本不支持时间戳或毫秒级的日期.更糟糕的是,某些版本在尝试创建此类列时将引发异常,而其 ...
- 市委组织部考核项目——利用EasyUi中可编辑的DataGrid控件对多行数据进行编辑并提交
http://blog.csdn.net/cjr15233661143/article/details/19041165 市委组织部考核项目中需要录入原始数据,拿开发区的数据录入举例说明,见下图,需要 ...
- SQL查找数据库中所有没有主键的数据表脚本
--SQL查找数据库中所有没有主键的数据表脚本 --运行脚本后在消息中可能会显示下面现象中的一种:--(1)数据库中所有数据表都有主键(则证明所有数据表都有主键)--(2)当前数据表[数据表名]没有主 ...
- delphi附带通用控件安装方法:
附带通用控件安装方法:----------基本安装1.对于单个控件,Componet-->install component..-->PAS或DCU文件-->install;2.对于 ...
- EasyUI中datagrid控件的使用 设置多行表头(两行或多行)
EasyUI中的datagrid控件十分强大,能生成各种复杂的报表,现在因为项目需要,需要生成一个表头两行的表,找了一些说明文档,以下用一个实例来说明一下: 第一种方法: $('#divData'). ...
- winform中DataGrid控件的宽度设置
最近修改一个win5.0的PDA程式,碰到一个问题.就是给DataGrid控件绑定数据的时候,这个控件的宽度不能调整,有时候数据较长,就显示不全.然后想在程式里自定义它的宽度,设置不成功.然后网上没找 ...
- easyUI的datagrid控件日期列不能正确显示Json格式数据的解决方案
EasyUI是一套比较轻巧易用的Jquery控件,在使用过程中遇到一个问题,它的列表控件——datagrid, 在显示日期列的时候,由于后台返回给页面的数据是Json格式的,其中的日期字段,在后台是正 ...
随机推荐
- [转]阿里巴巴数据库连接池 druid配置详解
一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...
- Java笔记:Number
序号 方法与描述 1 xxxValue()将number对象转换为xxx数据类型的值并返回. 2 compareTo()将number对象与参数比较. 3 equals()判断number对象是否与参 ...
- 如何编写稳定流畅的iOS移动端应用
原文链接:http://www.jianshu.com/p/f4adce56166f 不忘初心 在过去几年间,移动应用以雷霆之势席卷全球.我们在工作和休闲时间中使用互联网的方式,已经随着移动应用的前进 ...
- html表单提交方式
xml 表单提交方式: * 使用submit提交 <form> 要提交的数据 <input type="submit" /'> </form> ...
- Java研发岗位面试归类A(附答案)
题目来自http://www.codeceo.com/article/201-java-interview-qa.html,答案自己网上找的,如有疏漏,欢迎斧正.一起学习,共同进步. 一.Java基础 ...
- C/C++面试知识点总结
1.中缀,后缀,前缀表达式: 后缀表达式是波兰逻辑学家卢卡西维奇(Lukasiewicz)发明的一种表示表达式的方法.这种表示方式把运算符写在运算对象的后面,例如,把a+b写成ab+,所以也称为后缀式 ...
- Spring MVC 学习 -- 创建过程
Spring MVC 学习 -- 创建过程 Spring MVC我们使用的时候会在web.xml中配置 <servlet> <servlet-name>SpringMVC< ...
- SharedPreferences 详解
获取SharedPreferences的两种方式: 1 调用Context对象的getSharedPreferences()方法 2 调用Activity对象的getPreferences()方法 两 ...
- 两个select 左右添加,上下移动
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- Java工程师层级