CurrencyManager的使用(绑定数据到控件),数据分条显示
2013-03-07 11:23
423 查看
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using 库存管理系统.Tool; using System.Data.SqlClient; using System.IO; namespace 库存管理系统 { public partial class frmMain : Form { private DataSet dsDept=new DataSet();//存放所有的部门信息 private DataSet dsUserType;//存放所有的用户类型信息 private DataSet dsSearchInfo = new DataSet(); private CurrencyManager manger; public EventHandler ShowPic { get; set; } private DataTable dtInfo=new DataTable(); private bool isBinded = false;//是否绑定过了 public frmMain() { InitializeComponent(); } private void 查询ToolStripMenuItem1_Click(object sender, EventArgs e) { frmSearch fs = new frmSearch(); fs.ShowDialog(); } private void frmMain_FormClosed(object sender, FormClosedEventArgs e) { Application.Exit(); } private void frmMain_Load(object sender, EventArgs e) { toolStripStatusLabel1.Text = "欢迎您," + UserInfo.UserType + " " + UserInfo.UserName; InitCombox(); } private void 关于ToolStripMenuItem_Click(object sender, EventArgs e) { MessageBox.Show("本程序由 微笑~蓝极光 编写\r\n 库存管理系统 ver0.31","关于",MessageBoxButtons.OK); } private void 新增ToolStripMenuItem1_Click(object sender, EventArgs e) { } private void 当前页查询ToolStripMenuItem_Click(object sender, EventArgs e) { panelCurSearch.Visible = true; panelRight.Visible = false; } private void 退出ToolStripMenuItem_Click(object sender, EventArgs e) { if(DialogResult.OK == MessageBox.Show("您确定要退出吗?","提示",MessageBoxButtons.OKCancel)){ Application.Exit(); } } private void treeView1_AfterSelect(object sender, TreeViewEventArgs e) { string text = tvOptions.SelectedNode.Text; switch (text) { case "浏览": //列出用户的所有信息 panelCurSearch.Visible = false; panelRight.Visible = true; DgvShow(); break; case "查询": panelCurSearch.Visible = true; panelRight.Visible = false; break; case "新页面查询": frmSearch fs = new frmSearch(); fs.ShowDialog(); break; case "新增": break; case "我的信息": panelCurSearch.Visible = true; txtID.Text = ""; cmbDept.SelectedIndex = 0; string Name = UserInfo.UserName; txtName.Text = Name; int DeptId = (int)cmbDept.SelectedValue; ShowSearchResult(); break; } } //绑定数据到控件 private void BindToText() 109 { 110 if(isBinded){//如果绑定就移除绑定 111 txtLID.DataBindings.RemoveAt(0); 112 txtLName.DataBindings.RemoveAt(0); 113 cmbDept.DataBindings.RemoveAt(0); 114 txtAge.DataBindings.RemoveAt(0); 115 txtSalary.DataBindings.RemoveAt(0); 116 cmbLType.DataBindings.RemoveAt(0); 117 cmbLDept.DataBindings.RemoveAt(0); 118 cmbLGender.DataBindings.RemoveAt(0); 119 picBox.DataBindings.RemoveAt(0); 120 } 121 //绑定数据到控件 122 dtInfo=dsSearchInfo.Tables[0]; 123 txtLID.DataBindings.Add("Text", dtInfo,"EmpId"); 124 txtLName.DataBindings.Add("Text", dtInfo, "EmpName"); 125 cmbDept.DataBindings.Add("SelectedValue", dtInfo, "DeptId"); 126 cmbLGender.DataBindings.Add("Text", dtInfo, "EmpGender"); 127 txtAge.DataBindings.Add("Text", dtInfo, "EmpAge"); 128 txtSalary.DataBindings.Add("Text", dtInfo, "EmpSalary"); 129 cmbLType.DataBindings.Add("SelectedValue", dtInfo, "TypeId"); 130 cmbLDept.DataBindings.Add("SelectedValue", dtInfo, "DeptId"); 131 //将数据库中的图片byte[] 存储到图片控件(pictureBox)的tag标签中,CurrencyManager的positionChanged事件中更新图片控件的Image,实现图片显示: 132 picBox.DataBindings.Add("Tag", dtInfo, "ImageLogo"); 133 134 manger = this.BindingContext[dsSearchInfo.Tables[0]] as CurrencyManager; 135 manger.Position = 0; 136 } //初始化combox的值 private void InitCombox() { cmbGender.Items.Add("不选"); cmbGender.Items.Add("男"); cmbGender.Items.Add("女"); cmbGender.SelectedIndex = 0; dsDept = SqlHelper.ExecuteDataSet("select DeptId,DeptName from T_Department"); //绑定部门信息 cmbLDept.DataSource = SqlHelper.ExecuteDataSet("select DeptId,DeptName from T_Department").Tables[0]; cmbLDept.ValueMember = "DeptId"; cmbLDept.DisplayMember = "DeptName"; //绑定管理员类型信息 cmbLType.DataSource = SqlHelper.ExecuteDataSet("select TypeId,TypeName from T_Type").Tables[0]; cmbLType.ValueMember = "TypeId"; cmbLType.DisplayMember = "TypeName"; List<DeptNameInfo> depts = new List<DeptNameInfo>(); depts.Add(new DeptNameInfo() { DeptName ="选择部门", DeptId =-2 }); foreach (DataRow row in dsDept.Tables[0].Rows) { depts.Add(new DeptNameInfo() {DeptName=(string)row["DeptName"] ,DeptId=(int)row["DeptId"]}); } cmbDept.DataSource = depts; cmbDept.ValueMember = "DeptId"; cmbDept.DisplayMember = "DeptName"; dsUserType = SqlHelper.ExecuteDataSet("select TypeId,TypeName from T_Type"); } private void DgvShow() { string sql = "select EmpId 'ID',EmpName '姓名',DeptName '部门名称',EmpGender '性别',EmpAge '年龄',EmpSalary '薪水',TypeName '用户类型' from T_Department,T_Employee,T_Type where T_Department.DeptId=T_Employee.DeptId and T_Type.TypeId=T_Employee.TypeId "; dgvInfo.DataSource = SqlHelper.ExecuteDataSet(sql).Tables[0]; } private void btnSearch_Click(object sender, EventArgs e) { ShowSearchResult(); MyShowPic(sender,e); } private void ShowSearchResult() { string ID = txtID.Text.Trim(); string Name = txtName.Text.Trim(); int DeptId = (int)cmbDept.SelectedValue; string Gender = cmbGender.Text.Trim(); string SignId = ""; string SignDeptId = ""; string SignGender = ""; // //控制符号 if (ID.Length < 1) { SignId = "!"; } if (DeptId < 0) { SignDeptId = "!"; } if (Gender == "不选") { SignGender = "!"; } string Sql = "select * from T_Employee where EmpId " + SignId + "= @EmpId and DeptId " + SignDeptId + "= @DeptId and EmpGender " + SignGender + "= @EmpGender and EmpName like '%" + Name + "%' "; dsSearchInfo = SqlHelper.ExecuteDataSet(Sql, new SqlParameter("@EmpId", ID), new SqlParameter("@DeptId", DeptId), new SqlParameter("@EmpGender", Gender)); BindToText(); 217 manger.PositionChanged += MyShowPic; 218 isBinded = true; 219 ShowInfo(); } private void btnFirst_Click(object sender, EventArgs e) { manger.Position = 0; ShowInfo(); } private void btnLast_Click(object sender, EventArgs e) { manger.Position = dtInfo.Rows.Count - 1; ShowInfo(); } private void btnPrev_Click(object sender, EventArgs e) { if (!isFirst()) { manger.Position -= 1; ShowInfo(); } else { MessageBox.Show("已经到第一行!"); } } private void btnNext_Click(object sender, EventArgs e) { if (!isLast()) { manger.Position += 1; ShowInfo(); } else { MessageBox.Show("已经到最后一行!"); } } private bool isLast() { return manger.Position >= dtInfo.Rows.Count - 1; } private bool isFirst() { return manger.Position <= 0; } private void ShowInfo() { int TotalCount=0; int CurCount = 0; if(dtInfo.Rows.Count>0){ TotalCount = dtInfo.Rows.Count; } if (manger.Position>0) { CurCount = manger.Position; } labInfo.Text = "(" + (CurCount+1) + "/" + TotalCount + ")"; } private void 我的信息ToolStripMenuItem_Click(object sender, EventArgs e) { string ID = txtID.Text.Trim(); string Name = UserInfo.UserName; txtName.Text = Name; int DeptId = (int)cmbDept.SelectedValue; panelCurSearch.Visible = true; ShowSearchResult(); } private void dgvInfo_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e) { DataGridViewCell cell= dgvInfo.CurrentRow.Cells[0]; if (cell.Value == null || ((string)(cell.Value))=="") { return; } string EmpId = (string)cell.Value; txtID.Text = EmpId; txtName.Text = ""; cmbGender.SelectedIndex = 0; cmbDept.SelectedIndex = 0; panelCurSearch.Visible = true; panelRight.Visible = false; ShowSearchResult(); } //显示图片 public void MyShowPic(object sender, EventArgs e) 318 { 319 if (picBox.Tag != null && !(picBox.Tag is DBNull)) 320 { 321 byte[] imgSourse = (byte[])picBox.Tag; 322 323 MemoryStream ms = new MemoryStream(imgSourse); 324 picBox.Image = Image.FromStream(ms); 325 ms.Close(); 326 327 } 328 else 329 { 330 331 332 } 333 334 335 } 336 337 338 339 } }
图片的显示效果:(实现的下边查找之后的数据分条导航显示)
![](http://images.cnitblog.com/blog/450129/201303/07112032-876b278e2d294cf6850688b990545348.jpg)
相关文章推荐
- ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示(一)
- 使用数据绑定控件显示数据
- REPEATER控件显示数据,交替项显示;分页类的使用,Repeater控件分页;使用DataList控件绑定数据;使用DataList控件的选择模板
- 使用数据绑定控件显示数据
- .NET 使用GridView控件绑定数据源其他操作(查询相关数据,而不是显示全数据)
- 使用DataTable绑定DataGridView后,鼠标点击DataGridView控件时才会显示数据?
- 使用数据绑定控件显示数据
- ASP.NET使用ListView数据绑定控件和DataPager实现数据分页显示(二)
- 使用嵌套的Repeater控件显示分级数据
- 使用嵌套的Repeater控件显示分级数据
- 使用Repeater绑定数据,及提取显示数据进行操作的一点小方法!(模板列)
- 数据绑定控件Repeater/GridView/DataList在前台显示正确的文本格式收藏
- treeview 控件使用和数据绑定
- ListView Column Item绑定不同控件和数据格式化显示
- Atlas入门-将普通控件升级为Atlas控件/使用listView显示数据库数据[视频]
- Control Study -> 主表和子表数据同时在绑定控件显示(示例代码下载)
- 在数据绑定控件中使用LinkButton传递参数方法
- 如何让GridView控件在绑定的数据源没有数据时也显示标题
- 使用嵌套的Repeater 控件来显示分级数据
- 使用嵌套的Repeater控件显示分级数据