📄 frmplatfteatree.cs
字号:
}
}
/****************************************************************************
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 + -