📄 frmplatfdept.cs
字号:
for(int j=2;j<cmicDt.Columns.Count;j++)
{
cmicItem.SubItems.Add(cmicDt.Rows[i][j].ToString().Trim());
}
sLV.Items.Add(cmicItem);
}
}
else
{
return;
}
}
/***************************************************************************************************************
* 功能:初始化学校部门维护界面,在listview中显示全部记录
*
* 输入参数:无
* 输出参数:无
* ************************************************************************************************************/
//功能:初始化学校部门维护界面,在listview中显示全部记录
private void Deptview()
{
//窗体初始化设置
//toolbar初始化设置
tbrButtonAdd.Enabled = true;
tbrButtonDel.Enabled = true;
//数据库查询操作,listview中按照名称顺序显示记录
System.Data.OracleClient.OracleConnection myConn = Connection.DBConnection;
if (myConn == null)
{
return;
}
string mySql = "SELECT OrgName FROM Charge_School_Info";
string orgname = "(无)";
OracleCommand orgCommand = new OracleCommand(mySql,myConn);
OracleDataReader orgDataReader = null;
try
{
orgDataReader = orgCommand.ExecuteReader();
}
catch(Exception ee)
{
MessageBox.Show("数据库查询出错,消息如下:\r\n"+ee.Message,"消息:",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
while (orgDataReader.Read ())
{
orgname = orgDataReader.GetValue(0).ToString().Trim();
}
mySql = "SELECT A.DEPTID 标识,A.DEPTNAME 部门名称,NVL(C.DEPTNAME,'" + orgname + "') 上级部门名称,A.DEPTNUMBER 部门人数,A.DEPTDESC 部门描述 "
+"FROM charge_dept_info A,charge_R_Dept B,charge_dept_info C "
+"WHERE B.TODEPTID = A.DEPTID AND B.FROMDEPTID=C.DEPTID(+) ORDER BY DECODE(NVL(C.DEPTNAME,'" + orgname + "'),'" + orgname + "',1,2),A.DEPTNAME";
OracleCommand selCommand = new OracleCommand(mySql,myConn);
OracleDataReader lvDataReader = null;
try
{
lvDataReader = selCommand.ExecuteReader();
}
catch(Exception ee)
{
MessageBox.Show("数据库查询出错,消息如下:\r\n"+ee.Message,"消息:",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
//listview初始化设置
lvDept.Clear();
lvDept.FullRowSelect =true; //整行选择
lvDept.HideSelection = false; //当listview没有焦点时,选定项是否仍然突出显示
//listview与数据库绑定
BindingsListView(lvDataReader,lvDept);
myConn.Close();
//listview显示后列宽度等的一些细节调整
lvDept.Columns[0].Width =200;
lvDept.Columns[1].Width =200;
this.lvDept.ListViewItemSorter = new SortBySubItem(1);
lvDept.Sort();
}
/***************************************************************************************************************
* 功能:当对listview中某行双击时,通过此方法弹出新窗体显示该行信息
*
* 输入参数:1、sender
* 2、e
* 输出参数:无
*
* 最后修改时间:04-08-12 by cellz
* ************************************************************************************************************/
private void lvDept_DoubleClick(object sender, System.EventArgs e)
{
}
//功能:当对toolbar单击时的处理操作,有新增、浏览、删除、查询、退出按钮
private void tbrDept_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)
{
switch(tbrDept.Buttons.IndexOf(e.Button))
{
//新增操作
case 1:
//实例化新窗体用于信息的详细显示,并将listview作为第一参数传递给新窗体,为1表示是新增操作
CfrmPlatFDeptInfo frmPlatFDeptInfo = new CfrmPlatFDeptInfo(lvDept,1);
try
{
frmPlatFDeptInfo.ShowDialog();
}
catch
{
ErrorCode E = new ErrorCode();
E.ShowMessage(8);//窗体打开错误
return;
}
break;
//删除操作
case 2:
string tp_DeptID; //由所有要删除记录的ID组成的字符串
//实例化结构lvTagTemp,用来取得listviewitem的tag属性中保存的Deptid
lvTagTemp selectedTag = new lvTagTemp();
if (lvDept.SelectedItems.Count > 0 )
{
DialogResult result;
result = MessageBox.Show(this,"确定要删除所有已选记录吗?","提示",MessageBoxButtons.OKCancel, MessageBoxIcon.Warning,MessageBoxDefaultButton.Button2 );
if (result == DialogResult.OK)
{
//tp_DeptID中保存所有选定记录的id,例:三条记录的id为1,12,21,tp_DeptID="(1,12,21)"
tp_DeptID = "(";
for (int i =0 ;i< lvDept.SelectedItems.Count-1;i++)
{
selectedTag = (lvTagTemp)lvDept.SelectedItems[i].Tag ;
tp_DeptID = tp_DeptID + selectedTag.temp_id + ",";
}
//添加最后一个ID
selectedTag = (lvTagTemp)lvDept.SelectedItems[lvDept.SelectedItems.Count-1].Tag ;
tp_DeptID = tp_DeptID + selectedTag.temp_id + ")";
//添加存储过程输入参数
OracleParameter[] inParam = {new OracleParameter()};
inParam[0].ParameterName = "p_DeptID";
inParam[0].OracleType = OracleType.VarChar;
inParam[0].Value = tp_DeptID;
//添加存储过程输出参数
OracleParameter[] outParam = {new OracleParameter()};
outParam[0].ParameterName = "p_Result";
outParam[0].OracleType = OracleType.Int32;
outParam[0].Direction = ParameterDirection.Output;
int iRetVal = 0;
//删除存储过程的调用
iRetVal = GlobleHelper.ExecStoredProc("SP_charge_DELDEPT", inParam, ref outParam);
if(iRetVal == 7)
{
MessageBox.Show("违反外键约束,该部门被其他表引用!","消息",MessageBoxButtons.OK,MessageBoxIcon.Warning);
return;
}
if (Convert.ToInt32(outParam[0].Value) == 0)
{
for (int i =0 ;i< lvDept.SelectedItems.Count;)
{
try
{
lvDept.Items.RemoveAt(lvDept.SelectedIndices[0]);
}
catch(Exception)
{}
}
MessageBox.Show("删除成功!");
}
else
{
if (Convert.ToInt32(outParam[0].Value) == 7)
{
MessageBox.Show("要删除的部门有下级部门,请先删除下级部门!");
}
else
{
if (Convert.ToInt32(outParam[0].Value) == -2292) //-2292是oracle错误码,表示删除违反外键约束
{
MessageBox.Show("要删除的部门信息被别的表引用,请先删除相关信息!");
}
else
{
MessageBox.Show("未知数据库操作错误,请重新打开窗体!");
}
}
}
}
}
else
{
MessageBox.Show("请选择需要删除的记录!");
return;
}
break;
case 3:
this.Close();
break;
}
}
private void lvDept_ColumnClick(object sender, System.Windows.Forms.ColumnClickEventArgs e)
{
this.lvDept.ListViewItemSorter = new SortBySubItem(e.Column);
lvDept.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 + -