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格式的,其中的日期字段,在后台是正 ...
随机推荐
- pngcrush caught libpng error: Not a PNG file..
今日真机测试遇到这样的奇葩问题: While reading XXX/XXX.png pngcrush caught libpng error: Not a PNG file.. 替换几次图片都没解决 ...
- js 数组删去重复的加上没有的元素
为了一个数组的删除操作竟然费了一个多小时,下面分享一下我的代码: 代码功能:判断数组里是否有我要看的元素,如果没有就添加到数组里,如果有就去掉. var selectArr=[]; function ...
- 远方的塔--Pylons
转自:https://en.wikipedia.org/wiki/Pylons_project#Pylons_Framework Pylons
- 新浪云SAE搭建python环境 问题拾遗
1.python程序部署到sae上需要做的改动 在线上需要转换成wsgi的形式运行python程序. sae中运行python程序需要指定一个函数为入口函数. application = sae.cr ...
- POCO库——Foundation组件之加解密Crypt
加解密Crypt:内部提供多种加解密方式.信息摘要提取.随机数产生等,具体的算法内部实现不做研究学习: DigestEngine.h :DigestEngine类作为各种摘要提取的基类,提供必要的接口 ...
- Javascript中数组的基本操作
删除数组指定的某个元素 via首先可以给JS的数组对象定义一个函数,用于查找指定的元素在数组中的位置,即索引,代码为: Array.prototype.indexOf = function(val) ...
- Linux 2.6内核中新的锁机制--RCU
转自:http://www.ibm.com/developerworks/cn/linux/l-rcu/ 一. 引言 众所周知,为了保护共享数据,需要一些同步机制,如自旋锁(spinlock),读写锁 ...
- C语言的一些小知识
注:本文讨论的"C语言"为GNU C,而非ANSI C 标准库 语法 switch语句中的case关键词可以放在任何地方 switch (a) { case 1:; if (b== ...
- h5 notes
HTML5 服务器发送事件(Server-Sent Events)
- keycode
<script type="text/javascript" language=JavaScript charset="UTF-8"> docume ...