第5章 实现Windows程序的数据绑定
第6章 数据筛选和排序
显示模式窗体:ShowDialog() 方法
显示非模式窗体:Show()方法
/// 一个按钮的点击事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void click(object sender, EventArgs e)
{
Form2 form = new Form2();
/**
* form的name属性值是“Form2”
* ShowDialog:显示模式窗体;只能弹出一次窗体(Form2),不能点击除当前窗体以外的其他窗体。
* Show:显示非模式窗体;可以弹出无数的窗体(Form2),可以点击除当前窗体以外的其他窗体
**/
// form.Show();
form.ShowDialog();
}
第5章 实现Windows程序的数据绑定
5.1DataSet对象
5.2DataAdapter对象
属性 | 说明 |
DataSource | 获取或设置数据源 |
DisplayMember | 获取或设置要为此ListControl显示的属性 |
ValueMember | 获取或设置一个属性,该属性将用作ListControl中项的实际值 |
/// <summary>
/// 当页面加载窗体的时候执行方法,
/// 有一个comboBox的name值是“comboBox1”,给他绑定个数据源
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void load(object sender, EventArgs e)
{
String connStr = "Data Source=.;Initial Catalog=ldgxdb;Persist Security Info=True;User ID=sa;Password=root";
//创建SqlCommand
SqlConnection connection = null;
DataSet ds = null;
try
{
connection = new SqlConnection(connStr);
//打开Connection
connection.Open();
String sql = "select * from tbl_admin";
//创建SqlDataAdapter
SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
//DataSet
ds = new DataSet();
adapter.Fill(ds, "tbl_admin");//DataAdapter对象. Fill(数据集对象, "数据表名称");
}
catch (Exception ee)
{
Console.WriteLine("发生错误:" + ee.Message);
}
finally
{
if (connection != null)
{
connection.Close();
}
}
//添加数据“全部”
DataRow row = ds.Tables["tbl_admin"].NewRow();
row[0] = -1;
row[1] = "全部";
ds.Tables["tbl_admin"].Rows.InsertAt(row, 0);
//绑定数据
this.comboBox1.DataSource = ds.Tables["tbl_admin"];//comboBox的数据源
this.comboBox1.ValueMember = "id";//comboBox的每个项的id值
this.comboBox1.DisplayMember = "name";//comboBox的每个项的显示群
}
5.3数据绑定
5.4DataGridView控件
DataGridView控件的主要属性
属性 | 说明 |
AutoGenerateColumns | 设置DataGridView是否自动创建列 |
Columns | 包含的列的集合 |
DataSource | DataGridView的数据源 |
ReadOnly | 是否可以编辑单元格 |
DataGridView控制各列的主要属性
属性 | 说明 |
ColumnType | 列的类型 |
DataPropertyName | 绑定的数据列的名称 |
HeaderText | 列标题文本 |
Visible | 指定列是否可见 |
Frozen | 指定水平滚动DataGridView时,列是否移动 |
ReadOnly | 指定单元格是否为可读 |
界面编辑
1.给DataGridView绑定一个数据源就可以了
代码编辑
/// <summary>
/// 当页面加载窗体的时候执行此方法,给DataGridView绑定数据源
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_Load(object sender, EventArgs e)
{
String connStr = "Data Source=.;Initial Catalog=ldgxdb;User ID=sa;Password=root";
String sql = "select * from tbl_admin";
SqlConnection connection = null;
try
{
//1.创建SqlConnection
connection = new SqlConnection(connStr);
//2.SqlConnection.open()
connection.Open();//打开连接
//3.创建SqlDataAdapter
SqlDataAdapter adapter = new SqlDataAdapter(sql,connection);
//4.创建DataSet
DataSet ds = new DataSet();
//5.填充DataSet
adapter.Fill(ds,"tbl_admin");
//6.DataGridView的属性“name”是“dataGridView1”,绑定数据源
dataGridView1.DataSource = ds.Tables["tbl_admin"];
}
catch (Exception ee)
{
Console.WriteLine("发生错误:" + ee.Message);
}
finally
{
if (connection.State == ConnectionState.Open || connection.State == ConnectionState.Broken)
{
connection.Close();//关闭连接
}
}
}
第6章数据筛选和排序
6.1TreeView控件
TreeView控件的属性和事件
属性 | 说明 |
Nodes | TreeView控件中的所有根节点 |
ImageList | 存放TreeView控件中节点的图像 |
ImageIndex | 节点默认的图像索引 |
SelectedImageIndex | 节点选中的图像的索引 |
SelectedNode | 当前选中的父节点 |
属性 | 说明 |
AfterSelect | 节点选中后发生 |
TreeNode的常用属性
属性 | 说明 |
Text | 节点上的文字 |
ImageIndex | 节点默认的图像索引,如果不设置,将保持与TreeView控件的设置相同 |
SelectImageIndex | 节点选中时图像的索引,如果不设置,将保持与TreeView控件的设置相同 |
Level | 节点在树中的深度,从0开始 |
Nodes | 当前节点包含的子节点的集合 |
ParentNode | 当前节点的父节点 |
6.2DataView
DataSet,DataTable,DataView三者之间的关系
一个DataSet中可以有多个DataTable,一个DataTable可以动态生成多个DataView。
属性 | 说明 |
Table | 用来获取或设置源DataTable |
Sort | 获取或设置DataView的一个或多个排序列以及排序顺序 |
RowFilter | 获取或设置用于筛选在DataView中查看哪些行的表达式 |
Count | 在应用RowFilter后,获取DataView中的行数 |
全局定义参数
SqlDataAdapter adapter;
DataSet ds = null;
从数据库中取出DataSet
/// <summary>
/// 从数据库查询得到DataSet
/// </summary>
/// <returns></returns>
private DataSet getDataSet()
{
String connStr = "Data Source=.;Initial Catalog=ldgxdb;User ID=sa;Password=root";
String sql = "select * from tbl_admin";
SqlConnection connection = null;
DataSet ds = null;
try
{
//1.创建SqlConnection
connection = new SqlConnection(connStr);
//2.SqlConnection.open()
connection.Open();//打开连接
//3.创建SqlDataAdapter
SqlDataAdapter adapter = new SqlDataAdapter(sql, connection);
//4.创建DataSet
ds = new DataSet();
//5.填充DataSet
adapter.Fill(ds, "tbl_admin");
}
catch (Exception ee)
{
Console.WriteLine("发生错误:" + ee.Message);
}
finally
{
if (connection.State == ConnectionState.Open || connection.State == ConnectionState.Broken)
{
connection.Close();//关闭连接
}
}
return ds;
}
当窗体加载的 时候执行的方法
ds = this.getDataSet();
//DataGridView的属性“name”是“dataGridView1”,绑定数据源
dataGridView1.DataSource = ds.Tables["tbl_admin"];
查询,TreeView选中后执行的方法
/// <summary>
/// 控件TreeView的属性“name”是treeView2
/// 控件DataGridView属性“name”是dataGridView1
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void afterSelect(object sender, TreeViewEventArgs e)
{
DataView dv = new DataView(ds.Tables["tbl_admin"]);
String rowFilter = string.Empty;//筛选条件
rowFilter = string.Format("name='{0}'", this.treeView2.SelectedNode.Text);
//筛选name = "name"并显示
dv.RowFilter = rowFilter;
dv.Sort = "name desc";
dataGridView1.DataSource = dv;
}
6.3在DataGridView控件中实现删除操作