Windows Form -----内容(9)
一、实现查询功能:
(一)做数据访问类:
使用CodeSmith生成
配置链接字符串
扩展相应的查询方法。
(二)造界面
添加、修改、删除
下拉列表,文本框,查询
ListView
(三)写代码:
1.查询所有的,显示在ListView中。
a.取数据——调用后端不同的方法,返回List<TeacherData>
b.显示出来——把List<TeacherData>加载到ListView中去
a)做列表项——ListViewItem
(a)做主项 ListViewItem item = new ListViewItem(); item.Text=...;item.Tag=...;
(b)加子项 item.SubItems.Add(子项内容);
b)加到列表上——ListView1.Items.Add()
2.根据下拉列表选中的项进行查询。
a.取数据——调用后端不同的方法,返回List<TeacherData>
b.显示出来。——把List<TeacherData>加载到ListView中去
二、实现添加功能:
1.做添加窗体:
做界面——略
写代码:
a.填充“部门”下拉列表
//取部门所有数据
//绑定到部门下拉列表中去。
b.编写“添加”按钮的代码。
//取界面上的数据,放到TeacherData对象中去
//把造出来的TeacherData对象扔到数据库中去
//返回DialogResult
2.在主界面中调用显示添加窗体:
以对话框形式显示出添加窗体。接收返回来的DialogResult
如果返回的是OK,就调用ShowTeacher()方法重新查遍数据库,显示在列表中刷新
三、实现修改功能:
1.做修改窗体
做界面---略
写代码
a.填充部门下拉列表。
//取数据;
//填进去
b.初始化老师数据。接收要修改主键,查询要修改的记录,放在修改窗体中。
//获取主键
定义个成员变量,用来保存传来的主键值。 private string _Key = "";
定义个构造函数,接收传来的值,保存在上面的成员变量中 public XXX(string code){this._Key = code;}
//查询相应的记录
就用XXXXDA类的方法,把主键值传进去获得查询结果。
XXXXDA da = new XXXXDA();
XXXXData data = da.Select(_Key);
//把查出来的结果显示在窗体上。
把上面的查询结果放在窗体的控件中。
xxxx.Text = data.XXXX;
......
c.编写“更新”按钮中的代码。
//获取界面上的数据
XXXXData data = new XXXXData();
data.xXX = xxxx;
.....
//送回数据库
XXXXXDA da = new XXXXDA();
da.Update(data);
//返回DialogResult
this.DialogResult = ....OK;
2.在主界面中调用显示修改窗体。
//获取要修改的项的主键值。
//显示修改窗体对话框,并把主键值传过去。
//根据修改窗体返回的DialogResult,决定是否刷新显示。
小知识点:(1)substring(),lastindexOf();图片中用到了opendialogfile对话框控件;转义字符。
private void button3_Click(object sender, EventArgs e)
{
DialogResult result = OPEN.ShowDialog();//open 这个窗体show出来
if (result==System.Windows.Forms.DialogResult.OK)
{
string path = OPEN.FileName;
int start = path.LastIndexOf("\\")+1;//转义字符\\反斜杠
//文件夹完整路径:C:\QQ\QQ.EXE,显示出来的是下标,从0开始数
lblPic.Text = "car/" + path.Substring(start);
//忘记的内容:
//String.SubString(int index,int length)
//index:开始位置,从0开始
//length:你要取的子字符串的长度
//String s="abcdefgh"; 字符串长度为 8 下标范围 0-7
//s.SubString(2,7); 由下标为2的字母开始截取 下标为2的字母为C 即从C开始获取后面7个字母包括C,可以看到C后面的字母只有5个,
//而你要取7个 所以造成数组越界。 如果想去从一个位置到结尾的字符串 可以省略 subString()方法的第二个参数,即subString(2),
//即从下标位置为2的字符开始一直到结尾。
}
}
(2)
lblPic.Text = data.Pic;
//定位系列和厂商的下拉列表
string brandcode = data.Brand;
string prodcode = data.BrandData.ProdCode;
//根据厂商代号定位厂商下拉列表
foreach (ProductorData prod in cmbProd.Items)
{
if (prod.ProdCode==prodcode)
{
cmbProd.SelectedItem = prod;
break;
}
}
//根据系列代号定位系列下拉列表
foreach (BrandData brand in cmbBrand.Items)
{
if (brand.BrandCode==brandcode)
{
cmbBrand.SelectedItem = brand;
break;
}