⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmplatfteatree.cs

📁 功能设计:平台管理、收费点维护、收费项目管理、缴费管理
💻 CS
📖 第 1 页 / 共 2 页
字号:
			}
			
		}

		/****************************************************************************
		Function Description:
			获得某个班级的用户列表
		Arguments:
			Node		当前点击的树结点,即当前班级
		Return Value:
			NONE
		History:
			Modified on 07/23/2004 by may-fly@tom.com
		*****************************************************************************/
		private void GetTUserList(TreeNode Node)//ok
		{
			string strDtName = "dtUser"; 
			DataSet dsUser = new DataSet();

			//实例化结构trvTagTemp
			trvTagTemp selectedTag = (trvTagTemp)Node.Tag ;
	
			int DeptID = Convert.ToInt32(selectedTag.temp_id);
			//存储过程的名称
			string strProcedureName = "charge.sp_charge_GetTeaByTopDeptID";

			//输出参数(两个)
			OracleParameter[] outParam = {new OracleParameter(), new OracleParameter()};
			outParam[0].ParameterName = "p_Result";
			outParam[0].OracleType = OracleType.Number;
			outParam[0].Direction = ParameterDirection.Output;
			outParam[1].ParameterName = "Re_CURSOR";
			outParam[1].OracleType = OracleType.Cursor;
			outParam[1].Direction = ParameterDirection.Output;

			//输入参数(两个)
			OracleParameter[] inParam = {new OracleParameter()};
			inParam[0].Direction = ParameterDirection.Input;
			inParam[0].ParameterName = "p_DeptID";
			inParam[0].Value = DeptID;

			//调用CStoreProc的RunProcedure方法,更新dtDept,dsUser
			int nReturn;
			nReturn = GlobleHelper.ExecStoredProc(strProcedureName, inParam, ref outParam, ref dsUser);
			if (nReturn != 7)
			{
				nReturn = Convert.ToInt32(outParam[0].Value);
				
				if (nReturn == 0)
				{
					foreach(DataTable dtTable in dsUser.Tables)
					{
						dtTable.TableName = strDtName;
						//做一些初始化工作
						
						lvTeaTree.ListViewItemSorter=null;
						lvTeaTree.BeginUpdate();//防止闪烁
						lvTeaTree.Items.Clear();
						lvTeaTree.Columns.Clear();
					
						string[] UserFieldInfo = {"姓名","性别","教工号","职务","所属最低级部门"};
						for (int i = 0; i <= 4; i++)
						{
							lvTeaTree.Columns.Add(UserFieldInfo[i], 80, HorizontalAlignment.Center);
						}				
						
						int j = 0;
						foreach (DataRow myRow in dtTable.Rows)
						{
							//在listview中显示数据
							ListViewItem  lvi;								

							//依次添加每列的数据
							lvi = lvTeaTree.Items.Add(myRow["Name"].ToString(), j);							
							lvi.SubItems.Add(myRow["Sex"].ToString());
							lvi.SubItems.Add(myRow["UserNumber"].ToString());
							lvi.SubItems.Add(myRow["Headship"].ToString());
							lvi.SubItems.Add(myRow["DeptName"].ToString());
							lvTagTemp TagTemp= new lvTagTemp();//为结构lvTagTemp分配内存
							TagTemp.temp_id  = myRow["UserID"].ToString();											
							lvi.Tag = TagTemp;

							j++;
						}
						lvTeaTree.EndUpdate();
						lvTeaTree.Refresh();	
					}				
				}
				else
				{
					ErrorCode errCode = new ErrorCode();
					errCode.ShowMessage(nReturn);
				}
			}
			else
			{
				ErrorCode errCode = new ErrorCode();
				errCode.ShowMessage(nReturn);
			}

		}

		/***************************************************************************************************************
		 * 功能:将listview与数据库记录集绑定,并在listview中显示出来,数据库记录集使用OracleDataReader
		 * 
		 * 输入参数:1、lvDataReader,使用OracleDataReader生成的记录集,将其绑定在sLV上
		 *           2、sLV,要绑定的listview名称
		 * 输出参数:无
		 * 
		 * 最后修改时间:04-08-12   by cellz
		 * ************************************************************************************************************/
		private void BindingsListView(OracleDataReader lvDataReader,ListView sLV)
		{
			sLV.View=View.Details;  
			sLV.GridLines=true; 
			sLV.ListViewItemSorter=null;
			sLV.Columns.Add ("状态",80,HorizontalAlignment.Center);
			for(int i=0;i<lvDataReader.FieldCount;i++)
			{
				//生成listview列头标,调用CaseName函数以中文显示列头
				sLV.Columns.Add ( lvDataReader.GetName(i),80,HorizontalAlignment.Center);
			}
			sLV.Columns.RemoveAt(1);    //因为第二列标是无意义的id字段,所以删除第二列标
			lvTagTemp TagTemp= new lvTagTemp();//为结构lvTagTemp分配内存
			while (lvDataReader.Read ())
			{
				ListViewItem cmicItem=new ListViewItem(); 
				//将第一个id字段以结构的形式赋给viewitem的tag属性				
				TagTemp.temp_id  = lvDataReader.GetValue(0).ToString().Trim();
				cmicItem.Tag = TagTemp;
				//(cmicItem.Tag as lvTagTemp).temp_id ; //tag属性的使用方法
				
				cmicItem.Text= "";
				//从第二个字段开始依次从viewitem的第二列开始显示
				for(int i=1;i<lvDataReader.FieldCount;i++)
				{
					cmicItem.SubItems.Add(lvDataReader.GetValue(i).ToString().Trim());   
				}
				sLV.Items.Add(cmicItem); 
				

			}
			
		}	

	
		/***************************************************************************************************************
		 * 功能:当对listview中某行双击时,通过此方法弹出新窗体显示该行信息
		 * 
		 * 输入参数:1、sender
		 *           2、e
		 * 输出参数:无
		 * 
		 * 最后修改时间:04-08-12   by cellz
		 * ************************************************************************************************************/
		/*
		private void lvTeaTree_DoubleClick(object sender, System.EventArgs e)
		{
			// 双击时如果选中了某条记录,则
			if (lvTeaTree.SelectedItems.Count >0)
			{
				//在Tag中保存了该条记录的ID,通过selectedTag.temp_id可调用此ID
				//lvTagTemp selectedTag = (lvTagTemp)lvTeaTree.SelectedItems[0].Tag ;				
				//CfrmPlatFTeaTreeInfo  frmPlatFTeaTreeInfo = new CfrmPlatFTeaTreeInfo(selectedTag.temp_id,Convert.ToString(lvTeaTree.SelectedIndices.IndexOf(0)));
				
				//实例化新窗体,并将listview作为第一参数传递给新窗体,第二参数设为0表示新窗体显示不是新增操作,为1表示是新增操作
				CfrmPlatFTeacherInfo  frmPlatFTeacherInfo = new CfrmPlatFTeacherInfo(lvTeaTree,0,1); 
				try
				{
					frmPlatFTeacherInfo.ShowDialog();
				
				}
				catch
				{
					ErrorCode E = new ErrorCode();
					E.ShowMessage(ErrorCode.E_603_FormOpenError_Code); //窗体打开错误
					return;
				}
				if(CfrmPlatFTeacherInfo.bModified)
				{
					Thread th = new Thread(new ThreadStart(thRefresh));
					th.Start();				
				}
			}
		}
        */
		private void thRefresh()
		{
			if (trvDept.SelectedNode ==null)
			{
				return;
			}
			//实例化结构trvTagTemp
			trvTagTemp tp_selectedTag = (trvTagTemp)trvDept.SelectedNode.Tag ;	
			
			
			switch (tp_selectedTag.temp_type) //节点类型
			{
//				case 0://教工下部门节点
//					lvTeaTree.Items.Clear();
//					trvDept.SelectedNode.Nodes.Clear();
//					GetDepttree(trvDept.SelectedNode);					
//					break;
				case 1://教工下部门节点
					lvTeaTree.Items.Clear();
//					trvDept.SelectedNode.Nodes.Clear();				
					//GetDepttree(trvDept.SelectedNode);	
					GetTUserList(trvDept.SelectedNode);//获得某部门的教工列表	
					break;			
				default:
					break;
			}
			
		}
		/***************************************************************************************************************
		 * 功能:当对toolbar单击时的处理操作,有新增、浏览、删除、查询、退出按钮
		 * 
		 * 输入参数:1、sender
		 *           2、e
		 * 输出参数:无
		 * 
		 * 最后修改时间:04-08-12   by cellz
		 * ************************************************************************************************************/
		private void tbrTeaTree_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
		{
			switch(tbrTeaTree.Buttons.IndexOf(e.Button))
			{				


					
				case 1:
					CfrmPlatFTeacherInfo frmPlatFTeacherInfo=new CfrmPlatFTeacherInfo(lvTeaTree,1,1);
                    frmPlatFTeacherInfo.ShowDialog();
					break;
				case 2:
					string tp_TeaTreeID;  //由所有要删除记录的ID组成的字符串
					//实例化结构lvTagTemp,用来取得listviewitem的tag属性中保存的TeaTreeid
					lvTagTemp selectedTag = new lvTagTemp();  
					if (lvTeaTree.SelectedItems.Count > 0 )
					{
						DialogResult result;
						result = MessageBox.Show(this,"确定要删除所有已选记录吗?","提示",MessageBoxButtons.OKCancel, MessageBoxIcon.Warning,MessageBoxDefaultButton.Button2 );
						if (result == DialogResult.OK)
						{  
							
							int errorcode =0;
							bool errorsign = false;
							for (int i =0 ;i< lvTeaTree.SelectedItems.Count;i++)
							{
								selectedTag = (lvTagTemp)lvTeaTree.SelectedItems[i].Tag ;
								tp_TeaTreeID = selectedTag.temp_id ;
								//添加存储过程输入参数
								OracleParameter[] inParam = {new OracleParameter()};
		
								inParam[0].ParameterName = "p_TeacherID";
								inParam[0].OracleType = OracleType.Char;
								inParam[0].Value = tp_TeaTreeID;
			
		
	   
								//添加存储过程输出参数
								OracleParameter[] outParam = {new OracleParameter()};
								outParam[0].ParameterName = "p_Result";
								outParam[0].OracleType = OracleType.Int32;
								outParam[0].Direction = ParameterDirection.Output;


								//删除存储过程的调用
								GlobleHelper.ExecStoredProc("SP_charge_DELTEACHER", inParam, ref outParam);
								//MessageBox.Show(Convert.ToString(outParam[1].Value));
								if (Convert.ToInt32(outParam[0].Value) == 0)
								{
									selectedTag.temp_id = "0";
									lvTeaTree.SelectedItems[i].Tag = selectedTag;
								}
								else
								{
									if (Convert.ToInt32(outParam[0].Value) == -2292) //-2292是oracle错误码,表示删除违反外键约束
									{
										errorcode = errorcode +1;
									}
									else
									{
										errorsign = true;
									}
								}
							}
							if ((errorcode == 0)&&(!errorsign))
							{
								for (int i =0 ;i< lvTeaTree.SelectedItems.Count;)
								{
									try
									{
										lvTeaTree.Items.RemoveAt(lvTeaTree.SelectedIndices[0]);
									}
									catch(Exception)
									{}
								}
								MessageBox.Show("删除成功!");
								blocalmodified = true;
							}
							else
							{
								for (int i =0 ;i< lvTeaTree.SelectedItems.Count;)
								{
									selectedTag = (lvTagTemp)lvTeaTree.SelectedItems[i].Tag; 
									if (selectedTag.temp_id == "0")
									{
										try
										{
											lvTeaTree.Items.RemoveAt(lvTeaTree.SelectedIndices[i]);
										}
										catch(Exception)
										{}
									}
									else
									{
										i++;
									}
								}
								if (errorsign)
								{ 
									if (errorcode>0)
									{
										MessageBox.Show("剩余" + errorcode +"条记录由于被发卡系统引用,无法删除!" +"\n 因未知错误而无法删除一些记录!"); 
									}
									else
									{
										MessageBox.Show ("因未知错误而无法删除一些记录!");
									}
								}
								else
								{
									MessageBox.Show("剩余" + errorcode +"条记录由于被发卡系统引用,无法删除!");
								}
							}
							
						}						
					}
					else
					{
						MessageBox.Show("请选择需要删除的记录!");
						return;
					}
					break;	
				case 3:
					this.Close();
					break;
			}
		}
     
		private void lvTeaTree_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
		{
			this.lvTeaTree.ListViewItemSorter = new SortBySubItem(e.Column);         
			lvTeaTree.Sort();
		}

		


		public class SortBySubItem : System.Collections.IComparer
		{
			private int m_Column = 0;
			public SortBySubItem(int Column)
			{
				m_Column = Column;
				
			}
			int IComparer.Compare(object x, object y)
			{
				ListViewItem item1 = (ListViewItem)x;
				ListViewItem item2 = (ListViewItem)y;
				
				int aa= String.Compare(item1.SubItems[m_Column].Text,
					item2.SubItems[m_Column].Text);
				return aa;
			}
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -