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格式的,其中的日期字段,在后台是正 ...
随机推荐
- android 实现返回键执行home键方法
在公司的产品开发,中老板很是执着于,不要看到启动界面,但是又不想去掉启动界面. so 实现返回键执行home键方法. public boolean onKeyDown(int keyCode, Key ...
- window.print() 打印页面部分内容的方法
用 JavaScript 实现页面数据的打印 : 主要是用到了一个 print() 函数 , 该函数将会打印整个 web 页面 body 内的所有 html 数据 ! 使用方法为 window.pri ...
- MYSQL字符类型数值排序
今天遇到MySQL数字排序问题,我的排序字段是经过计算后的,而计算后的字段直接拿来排序就会按照字符一个个排序,所以这里找到简单的方法, ORDER BY 排序字段* 或者 ORDER BY 排序字段+ ...
- CentOS下yum安装LAMP
1. 用yum安装Apache,Mysql,PHP. 1.1安装Apache yum install httpd httpd-devel 安装完成后,用/etc/init.d/httpd start ...
- node.js express架构安装部署
安装-g:表示全局安装(必须以安装node.js) npm install -g express-generator 创建一个express架构的项目文件夹express testWebApp 在pa ...
- Android基础学习第一篇—Project目录结构
写在前面的话: 1. 最近在自学Android,也是边看书边写一些Demo,由于知识点越来越多,脑子越来越记不清楚,所以打算写成读书笔记,供以后查看,也算是把自己学到所理解的东西写出来,献丑,如有不对 ...
- GitHub Windows客户端无法登录
Windows 7系统,下载GitHub后始终无法登录,貌似填写的用户名和密码都没有提交服务器,直接客户端“验证”的. 解决办法: 下载 Microsoft .NET Framework 4.5 安装 ...
- 利用C# Winform做Windows系统任务栏
最近公司做一个考试系统,需要一个答题栏,要求:占用屏幕上方一部分区域,而且始终置顶,当其他窗口最大化时"答题栏"始终置前并且不遮挡最大化窗口的任何部分!就像windows任务栏一样 ...
- MIT 6.828 JOS学习笔记11 Exercise 1.8
Exercise 1.8 我们丢弃了一小部分代码---即当我们在printf中指定输出"%o"格式的字符串,即八进制格式的代码.尝试去完成这部分程序. 解答: 在这个练 ...
- pyqt的信号槽机制(转)
PySide/PyQt Tutorial: Creating Your Own Signals and Slots This article is part 5 of 8 in the series ...