• CurrencyManager的使用(绑定数据到控件),数据分条显示


      1 using System;
      2 using System.Collections.Generic;
      3 using System.ComponentModel;
      4 using System.Data;
      5 using System.Drawing;
      6 using System.Linq;
      7 using System.Text;
      8 using System.Windows.Forms;
      9 using 库存管理系统.Tool;
     10 using System.Data.SqlClient;
     11 using System.IO;
     12 
     13 namespace 库存管理系统
     14 {
     15     public partial class frmMain : Form
     16     {
     17 
     18         private DataSet dsDept=new DataSet();//存放所有的部门信息
     19         private DataSet dsUserType;//存放所有的用户类型信息
     20         private DataSet dsSearchInfo = new DataSet();
     21         private CurrencyManager manger;
     22         public EventHandler ShowPic { get; set; }
     23         private DataTable dtInfo=new DataTable();
     24         private bool isBinded = false;//是否绑定过了
     25         public frmMain()
     26         {
     27             InitializeComponent();
     28         }
     29 
     30 
     31         private void 查询ToolStripMenuItem1_Click(object sender, EventArgs e)
     32         {
     33             frmSearch fs = new frmSearch();
     34             fs.ShowDialog();
     35         }
     36 
     37         private void frmMain_FormClosed(object sender, FormClosedEventArgs e)
     38         {
     39            Application.Exit();
     40         }
     41 
     42         private void frmMain_Load(object sender, EventArgs e)
     43         {
     44             toolStripStatusLabel1.Text = "欢迎您," + UserInfo.UserType + " " + UserInfo.UserName;
     45             InitCombox();
     46         }
     47 
     48         private void 关于ToolStripMenuItem_Click(object sender, EventArgs e)
     49         {
     50             MessageBox.Show("本程序由 微笑~蓝极光 编写\r\n 库存管理系统 ver0.31","关于",MessageBoxButtons.OK);
     51         }
     52 
     53         private void 新增ToolStripMenuItem1_Click(object sender, EventArgs e)
     54         {
     55           
     56         }
     57 
     58         private void 当前页查询ToolStripMenuItem_Click(object sender, EventArgs e)
     59         {
     60             panelCurSearch.Visible = true;
     61             panelRight.Visible = false;
     62         }
     63 
     64         private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
     65         {
     66            if(DialogResult.OK == MessageBox.Show("您确定要退出吗?","提示",MessageBoxButtons.OKCancel)){
     67             Application.Exit();
     68 
     69            }
     70         }
     71 
     72         private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
     73         {
     74             string text = tvOptions.SelectedNode.Text;
     75             switch (text)
     76             {
     77                 case "浏览":
     78                     //列出用户的所有信息
     79                     panelCurSearch.Visible = false;
     80                     panelRight.Visible = true;
     81                     DgvShow();
     82 
     83                     break;
     84                 case "查询":
     85                     panelCurSearch.Visible = true;
     86                     panelRight.Visible = false;
     87                     break;
     88                 case "新页面查询":
     89                      frmSearch fs = new frmSearch();
     90                      fs.ShowDialog();
     91                     break;
     92                 case "新增":
     93                     break;
     94                 case "我的信息":
     95                       panelCurSearch.Visible = true;
     96                          txtID.Text = "";
     97                          cmbDept.SelectedIndex = 0;
     98                         string Name = UserInfo.UserName;
     99                         txtName.Text = Name;
    100                         int DeptId = (int)cmbDept.SelectedValue;
    101                         ShowSearchResult();
    102                     break;
    103             }
    104         }
    105 
    106 
    107         //绑定数据到控件
    108         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         }
    137 
    138 
    139 
    140         //初始化combox的值
    141         private void InitCombox()
    142         {
    143            
    144             cmbGender.Items.Add("不选");
    145             cmbGender.Items.Add("");
    146             cmbGender.Items.Add("");
    147             cmbGender.SelectedIndex = 0;
    148 
    149          dsDept = SqlHelper.ExecuteDataSet("select DeptId,DeptName from T_Department");
    150             //绑定部门信息
    151          cmbLDept.DataSource = SqlHelper.ExecuteDataSet("select DeptId,DeptName from T_Department").Tables[0];
    152          cmbLDept.ValueMember = "DeptId";
    153          cmbLDept.DisplayMember = "DeptName";
    154             //绑定管理员类型信息
    155          cmbLType.DataSource = SqlHelper.ExecuteDataSet("select TypeId,TypeName from T_Type").Tables[0];
    156          cmbLType.ValueMember = "TypeId";
    157          cmbLType.DisplayMember = "TypeName";
    158 
    159 
    160          List<DeptNameInfo> depts = new List<DeptNameInfo>();
    161          depts.Add(new DeptNameInfo() { DeptName ="选择部门", DeptId =-2 });
    162          foreach (DataRow row in dsDept.Tables[0].Rows)
    163          {
    164              depts.Add(new DeptNameInfo() {DeptName=(string)row["DeptName"] ,DeptId=(int)row["DeptId"]});
    165          }
    166             cmbDept.DataSource = depts;
    167             cmbDept.ValueMember = "DeptId";
    168             cmbDept.DisplayMember = "DeptName";
    169 
    170             dsUserType = SqlHelper.ExecuteDataSet("select TypeId,TypeName from T_Type");
    171 
    172         }
    173 
    174         private void DgvShow()
    175         {
    176             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 ";
    177             dgvInfo.DataSource = SqlHelper.ExecuteDataSet(sql).Tables[0];
    178         }
    179 
    180         private void btnSearch_Click(object sender, EventArgs e)
    181         {
    182            
    183             ShowSearchResult();
    184             MyShowPic(sender,e);
    185         }
    186 
    187         private void ShowSearchResult()
    188         {
    189             string ID = txtID.Text.Trim();
    190 
    191             string Name = txtName.Text.Trim();
    192             int DeptId = (int)cmbDept.SelectedValue;
    193             string Gender = cmbGender.Text.Trim();
    194             string SignId = "";
    195             string SignDeptId = "";
    196             string SignGender = "";
    197 
    198             //
    199             //控制符号
    200             if (ID.Length < 1)
    201             {
    202                 SignId = "!";
    203             }
    204             if (DeptId < 0)
    205             {
    206                 SignDeptId = "!";
    207             }
    208             if (Gender == "不选")
    209             {
    210                 SignGender = "!";
    211             }
    212 
    213             string Sql = "select * from T_Employee where EmpId " + SignId + "= @EmpId and DeptId " + SignDeptId + "= @DeptId and EmpGender " + SignGender + "= @EmpGender and EmpName like '%" + Name + "%' ";
    214 
    215             dsSearchInfo = SqlHelper.ExecuteDataSet(Sql, new SqlParameter("@EmpId", ID), new SqlParameter("@DeptId", DeptId), new SqlParameter("@EmpGender", Gender));
    216             BindToText();
    217             manger.PositionChanged += MyShowPic;
    218             isBinded = true;
    219             ShowInfo();
    220         }
    221 
    222         private void btnFirst_Click(object sender, EventArgs e)
    223         {
    224             manger.Position = 0;
    225             ShowInfo();
    226         }
    227 
    228         private void btnLast_Click(object sender, EventArgs e)
    229         {
    230             manger.Position = dtInfo.Rows.Count - 1;
    231             ShowInfo();
    232         }
    233 
    234         private void btnPrev_Click(object sender, EventArgs e)
    235         {
    236             if (!isFirst())
    237             {
    238                 manger.Position -= 1;
    239                 ShowInfo();
    240 
    241             }
    242             else
    243             {
    244                 MessageBox.Show("已经到第一行!");
    245             }
    246         }
    247 
    248         private void btnNext_Click(object sender, EventArgs e)
    249         {
    250             if (!isLast())
    251             {
    252                 manger.Position += 1;
    253                 ShowInfo();
    254             }
    255             else
    256             {
    257                   MessageBox.Show("已经到最后一行!");
    258             }
    259         }
    260 
    261         private bool isLast()
    262         {
    263            
    264             return manger.Position >= dtInfo.Rows.Count - 1;
    265         }
    266 
    267         private bool isFirst()
    268         {
    269           
    270             return manger.Position <= 0;
    271         }
    272 
    273         private void ShowInfo()
    274         {
    275             int TotalCount=0;
    276             int CurCount = 0;
    277             if(dtInfo.Rows.Count>0){
    278                 TotalCount = dtInfo.Rows.Count;
    279             }
    280             if (manger.Position>0)
    281             {
    282                 CurCount = manger.Position;
    283             }
    284             labInfo.Text = "(" + (CurCount+1) + "/" + TotalCount + ")";
    285         }
    286 
    287         private void 我的信息ToolStripMenuItem_Click(object sender, EventArgs e)
    288         {
    289             string ID = txtID.Text.Trim();
    290 
    291             string Name = UserInfo.UserName;
    292             txtName.Text = Name;
    293             int DeptId = (int)cmbDept.SelectedValue;
    294             panelCurSearch.Visible = true;
    295             ShowSearchResult();
    296         }
    297 
    298         private void dgvInfo_CellMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
    299         {
    300            DataGridViewCell cell= dgvInfo.CurrentRow.Cells[0];
    301            if (cell.Value == null || ((string)(cell.Value))=="")
    302            {
    303                return;
    304            }
    305            string EmpId = (string)cell.Value;
    306            txtID.Text = EmpId;
    307            txtName.Text = "";
    308            cmbGender.SelectedIndex = 0;
    309            cmbDept.SelectedIndex = 0;
    310            panelCurSearch.Visible = true;
    311            panelRight.Visible = false;
    312            ShowSearchResult();
    313 
    314         }
    315 
    316         //显示图片
    317         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     }
    340 }  

    图片的显示效果:(实现的下边查找之后的数据分条导航显示)

  • 相关阅读:
    通过http.client解析url返回的数据时为什么中文变成了unicode码
    爬取微博的数据时别人用的是FM.view方法传递html标签那么jsoup怎么解析呢
    [Functional Programming] Function modelling -- 4. Reader Monda example
    [Angular] Understanding the Angular Component providers property
    [HTML5] Correctly Define Heading Levels of a Web Page
    [Functional Programming] Function modelling -- 3. Reader Monad
    [Functional Programming] 1. Function modelling -- Combine functions
    [React] When to useReducer instead of useState
    [Web component] Using Custom Events as a web component API
    [Functional Programming] 2. Function modelling -- Validation
  • 原文地址:https://www.cnblogs.com/skybreak/p/2947701.html
Copyright © 2020-2023  润新知