C#.NET 通用控件数据源绑定类
using System.Data;
using System.Collections;
using System.Collections.Generic;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Windows.Forms; namespace Nbjjy.Utilities
{
public static class ControlHelper
{
#region 数据源 /// <summary>
/// 获取或设置源,该源包含用于填充控件中的项的值列表。
/// </summary>
private static object dataSource; public static object DataSource
{
get
{
if (dataSource is DataSet)
{
DataSet ds = dataSource as DataSet;
dataSource = ds.Tables[];
}
else if (dataSource is DataTable)
{
DataTable dt = dataSource as DataTable;
dataSource = dt;
}
else if (dataSource is DataView)
{
DataView dv = dataSource as DataView;
dataSource = dv;
}
else if (dataSource is IDataReader)
{
IDataReader dr = dataSource as IDataReader;
dataSource = dr;
}
else if (dataSource is IEnumerable)
{
IEnumerable objList = dataSource as IEnumerable;
List<object> list = new List<object>();
foreach (object obj in objList)
{
list.Add(obj);
}
dataSource = list;
}
return dataSource;
} set
{
dataSource = value;
}
} #endregion #region WebUI绑定Control /// <summary>
///WebUI绑定Control
/// </summary>
/// <param name="control">定义由所有 ASP.NET 服务器控件共享的属性、方法和事件。</param>
/// <param name="dataSource">获取或设置源,该源包含用于填充控件中的项的值列表。</param>
public static void BindControl(System.Web.UI.Control control, object dataSource)
{
DataSource = dataSource;
if (control is System.Web.UI.WebControls.DataList)
{
(control as System.Web.UI.WebControls.DataList).DataSource = DataSource;
(control as System.Web.UI.WebControls.DataList).DataBind();
}
else if (control is System.Web.UI.WebControls.GridView)
{
(control as System.Web.UI.WebControls.GridView).DataSource = DataSource;
(control as System.Web.UI.WebControls.GridView).DataBind();
}
else if (control is System.Web.UI.WebControls.Repeater)
{
(control as System.Web.UI.WebControls.Repeater).DataSource = DataSource;
(control as System.Web.UI.WebControls.Repeater).DataBind();
}
} /// <summary>
///WebUI绑定Control
/// </summary>
/// <param name="control">定义由所有 ASP.NET 服务器控件共享的属性、方法和事件。</param>
/// <param name="dataSource">获取或设置源,该源包含用于填充控件中的项的值列表。</param>
/// <param name="dataTextField">获取或设置为列表项提供文本内容的数据源字段。</param>
/// <param name="dataValueField">获取或设置为各列表项提供值的数据源字段。</param>
public static void BindControl(System.Web.UI.Control control, object dataSource, string dataTextField, string dataValueField)
{
DataSource = dataSource;
if (control is System.Web.UI.WebControls.CheckBoxList)
{
(control as System.Web.UI.WebControls.CheckBoxList).DataSource = DataSource;
(control as System.Web.UI.WebControls.CheckBoxList).DataTextField = dataTextField;
(control as System.Web.UI.WebControls.CheckBoxList).DataValueField = dataValueField;
(control as System.Web.UI.WebControls.CheckBoxList).DataBind();
}
else if (control is System.Web.UI.WebControls.DropDownList)
{
(control as System.Web.UI.WebControls.DropDownList).DataSource = DataSource;
(control as System.Web.UI.WebControls.DropDownList).DataTextField = dataTextField;
(control as System.Web.UI.WebControls.DropDownList).DataValueField = dataValueField;
(control as System.Web.UI.WebControls.DropDownList).DataBind();
}
else if (control is System.Web.UI.WebControls.RadioButtonList)
{
(control as System.Web.UI.WebControls.RadioButtonList).DataSource = DataSource;
(control as System.Web.UI.WebControls.RadioButtonList).DataTextField = dataTextField;
(control as System.Web.UI.WebControls.RadioButtonList).DataValueField = dataValueField;
(control as System.Web.UI.WebControls.RadioButtonList).DataBind();
}
else if (control is System.Web.UI.WebControls.BulletedList)
{
(control as System.Web.UI.WebControls.BulletedList).DataSource = DataSource;
(control as System.Web.UI.WebControls.BulletedList).DataTextField = dataTextField;
(control as System.Web.UI.WebControls.BulletedList).DataValueField = dataValueField;
(control as System.Web.UI.WebControls.BulletedList).DataBind();
}
} #endregion #region WinUI绑定Control /// <summary>
/// DataGridView绑定
/// </summary>
/// <param name="dataGridView">在可自定义的网格中显示数据。</param>
/// <param name="dataSource">获取或设置数据源中 System.Windows.Forms.DataGridView 显示其数据的列表或表的名称。</param>
public static void BindControl(System.Windows.Forms.DataGridView dataGridView, object dataSource)
{
DataSource = dataSource;
dataGridView.DataSource = DataSource;
} /// <summary>
/// ListView绑定
/// </summary>
/// <param name="listView">表示 Windows 列表视图控件,该控件显示可用四种不同视图之一显示的项集合。</param>
/// <param name="text">获取或设置该项的文本。</param>
/// <param name="value">基于数组创建新子项,并将其添加到集合中。[可空参数]</param>
/// <param name="view">每个项都显示为一个最大化图标,在它的下面有一个标签。</param>
public static void BindControl(System.Windows.Forms.ListView listView, string text, string[] value, System.Windows.Forms.View view)
{
listView.View = view;
ListViewItem lvi = new ListViewItem();
lvi.Text = text;
listView.Items.Add(lvi);
if (value != null)
{
lvi.SubItems.AddRange(value);
}
} /// <summary>
/// WinUI绑定Control
/// </summary>
/// <param name="control">定义控件的基类,控件是带有可视化表示形式的组件。ID</param>
/// <param name="dataSource">获取或设置此 System.Windows.Forms.Control 的数据源。</param>
/// <param name="displayMember">获取或设置要为此 System.Windows.Forms.Control 显示的属性。</param>
/// <param name="valueMember">获取或设置一个属性,该属性将用作 System.Windows.Forms.Control 中的项的实际值。</param>
public static void BindControl(System.Windows.Forms.Control control, object dataSource, string displayMember, string valueMember)
{
DataSource = dataSource;
if (control is System.Windows.Forms.ComboBox)
{
(control as System.Windows.Forms.ComboBox).DataSource = DataSource;
(control as System.Windows.Forms.ComboBox).DisplayMember = displayMember;
(control as System.Windows.Forms.ComboBox).ValueMember = valueMember;
}
else if (control is System.Windows.Forms.CheckedListBox)
{
(control as System.Windows.Forms.CheckedListBox).DataSource = DataSource;
(control as System.Windows.Forms.CheckedListBox).DisplayMember = displayMember;
(control as System.Windows.Forms.CheckedListBox).ValueMember = valueMember;
}
else if (control is System.Windows.Forms.ListBox)
{
(control as System.Windows.Forms.ListBox).DataSource = DataSource;
(control as System.Windows.Forms.ListBox).DisplayMember = displayMember;
(control as System.Windows.Forms.ListBox).ValueMember = valueMember;
}
} #endregion
}
} 调用方法:
List<Model.BaseItemsType> list = BLL.BaseItemsType.GetList("", "");
foreach (Model.BaseItemsType model in list)
{
ControlHelper.BindControl(this.listView1, model.FullName, null, View.List);
}
ControlHelper.BindControl(this.dataGridView1, list);
ControlHelper.BindControl(this.comboBox1, list, "FullName", "Id");
ControlHelper.BindControl(this.listBox1, list, "FullName", "Id");
ControlHelper.BindControl(this.checkedListBox1, list, "FullName", "Id"); //DataTable list = BLL.BaseItemsType.GetDataTable("", "");
//DataSet list = BLL.BaseItemsType.GetDataSet("", "");
//DataView list = BLL.BaseItemsType.GetDataView("", "");
//for (int i = 0; i < list.Count; i++)
//{
// ControlHelper.BindControl(this.listView1, list.Table.Rows[i]["FullName"].ToString(), null, View.List);
//}
//for (int i = 0; i < list.Tables[0].Rows.Count; i++)
//{
// ControlHelper.BindControl(this.listView1, list.Tables[0].Rows[i]["FullName"].ToString(), null, View.List);
//}
//for (int i = 0; i < list.Rows.Count; i++)
//{
// ControlHelper.BindControl(this.listView1, list.Rows[i]["FullName"].ToString(), null, View.List);
//}
C#.NET 通用控件数据源绑定类的更多相关文章
- 在Bootstrap开发框架中使用dataTable直接录入表格行数据(2)--- 控件数据源绑定
在前面随笔<在Bootstrap开发框架中使用dataTable直接录入表格行数据>中介绍了在Web页面中使用Jquery DataTable插件进行对数据直接录入操作,这种处理能够给用户 ...
- WPF DevExpress Chart控件 界面绑定数据源,不通过C#代码进行绑定
<Grid x:Name="myGrid" Loaded="Grid_Loaded" DataContext="{Binding PartOne ...
- 在GridControl控件上绑定图片的几种操作方式
我们知道,基于DevExpress的开发Winform的项目界面的时候,GridControl控件是经常用来绑定数据的,一般以常规的字符内容为主,有时候也会有图片的显示需要,那么如果显示图片,我们应该 ...
- ASP.NET中后台数据和前台控件的绑定
关于ASP.NET中后台数据库和前台的数据控件的绑定问题 最近一直在学习个知识点,自己创建了SQL Server数据库表,想在ASP.NET中连接数据库,并把数据库中的数据显示在前台,注意,这里的数据 ...
- 背水一战 Windows 10 (32) - 控件(选择类): Selector, ComboBox
[源码下载] 背水一战 Windows 10 (32) - 控件(选择类): Selector, ComboBox 作者:webabcd 介绍背水一战 Windows 10 之 控件(选择类) Sel ...
- 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton
[源码下载] 背水一战 Windows 10 (31) - 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButt ...
- 背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox
[源码下载] 背水一战 Windows 10 (30) - 控件(文本类): AutoSuggestBox 作者:webabcd 介绍背水一战 Windows 10 之 控件(文本类) AutoSug ...
- 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton
介绍背水一战 Windows 10 之 控件(按钮类) ButtonBase Button HyperlinkButton RepeatButton ToggleButton AppBarButton ...
- asp.net学习之 数据绑定控件--表格绑定控件
原文:asp.net学习之 数据绑定控件--表格绑定控件 数据绑定 Web 服务器控件是指可绑定到数据源控件,以实现在 Web 应用程序中轻松显示和修改数据的控件.数据绑定 Web 服务器控件 ...
随机推荐
- STL三种标准容器
顺序性容器 vector:从后面快速的插入与删除,直接访问任何元素 deque:从前面或后面快速的插入与删除,直接访问任何元素 list: 双链表,从任何地方快速的插入与删除 关联容器 set:快速查 ...
- Linux:使用nohup让进程在后台可靠运行
学习之余我最大的乐趣是找一部不错的电影慢慢品味,这也是我缓解压力的最好方式之一,由于我常去的字幕组网站需要签到才可以下载字幕,像这种娱乐网站谁有时间天天记得去签到呢,but作为一个准程序猿应该有更好的 ...
- stl文件格式
http://wenku.baidu.com/view/a3ab7a26ee06eff9aef8077b.html [每个三角形面片的定义包括三角形各个定点的三维坐标及三角形面片的法矢量[三角形的法线 ...
- Educational Codeforces Round 6 E dfs序+线段树
题意:给出一颗有根树的构造和一开始每个点的颜色 有两种操作 1 : 给定点的子树群体涂色 2 : 求给定点的子树中有多少种颜色 比较容易想到dfs序+线段树去做 dfs序是很久以前看的bilibili ...
- gcc编译命令行依赖库的指定顺序
gcc链接过程中定义了三个集合:可重定位目标文件集合E.未解析符号集合U和已定义符号集合D,链接基本流程如下: 1) 按命令行指定顺序依次处理每个目标文件和库文件: 2) 如果为目标文件,将其加入集合 ...
- JAVA 对象调用理解图
- javaScript中值类型通过typeof直接进行检测
通过试验,对图像处理有了进一步深入了解和认知,基于第一次的滤波的处理和这次灰度线性变换和直方图处理图像,知道了图像的成像原理,都是一个个的像素点,就是矩阵的值.以后可以利用MATLAB进行图像处理,运 ...
- 每天进步一点点——五分钟理解一致性哈希算法(consistent hashing)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...
- 浅谈Json和jsonp
定义: JSON:是一种数据交换格式, JSONP是一种依靠开发人员的聪明才智创造出的一种非官方跨域数据交互协议 曾经看到一个有意思的例子:JSON是地下党们用来书写和交换情报的“暗号”的话, 而JS ...
- ubuntu14.0 (arm平台)源码安装 VLC播放器
环境 ubuntu14.0 arm开发板 源 deb http://mirrors.ustc.edu.cn/ubuntu-ports/ trusty main multiverse restrict ...