| using System; | 
| using System.Collections.Generic; | 
| using System.ComponentModel; | 
| using System.Data; | 
| using System.Drawing; | 
| using System.Text; | 
| using System.Windows.Forms; | 
|   | 
| namespace DBUtility | 
| { | 
|     public partial class Gy_UserSelect : Form | 
|     { | 
|         private int HItemIDCol = 0; | 
|         private int HNumberCol = 0; | 
|         public DBUtility.frm_B_BillQueryCondition_New frmCondition; | 
|         const string ViewName = "h_v_Gy_UserList"; | 
|         const string ModName = "选择用户"; | 
|         public DBUtility.ClsPub.Enum_InputMode InputMode;  //录入状态标志(0-非录入状态 1-增加 2-修改) | 
|         public long HItemID;//项目ID | 
|         SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); | 
|         TreeNode CurNode = new TreeNode(); | 
|         public bool bSingle = false; | 
|         public string sReturn = ""; | 
|         public int IsOk = 0; | 
|   | 
|         public Gy_UserSelect() | 
|         { | 
|             InitializeComponent(); | 
|         } | 
|         // | 
|         #region  固定代码 | 
|   | 
|         //新增 | 
|         private void AddNew() | 
|         { | 
|             InputMode = DBUtility.ClsPub.Enum_InputMode.InputMode_AddNew; | 
|             Init(); | 
|         } | 
|         //初始化GRID | 
|         private void initGrid() | 
|         { | 
|             DBUtility.Xt_BaseBillFun.initGridList(grdMain, this.Name); | 
|             DBUtility.Xt_BaseBillFun.initGridList(grdSource, this.Name + "grdSource"); | 
|             grdMain.ColumnCount = 5; | 
|             grdMain.RowCount = 0; | 
|             grdMain.RowHeadersVisible = false; | 
|             grdMain.ColumnHeadersVisible = true; | 
|             grdMain.Columns[0].HeaderText = "序号"; | 
|             grdMain.Columns[1].HeaderText = "h用户ID"; | 
|             grdMain.Columns[2].HeaderText = "用户"; | 
|             grdMain.Columns[3].HeaderText = "h用户组ID"; | 
|             grdMain.Columns[4].HeaderText = "用户组"; | 
|   | 
|             grdMain.CellBorderStyle = DataGridViewCellBorderStyle.Sunken; | 
|             grdMain.Columns[0].Visible = false; | 
|             grdMain.Columns[1].Visible = false; | 
|             grdMain.Columns[3].Visible = false; | 
|             grdMain.Columns[4].Visible = false; | 
|             // | 
|             grdSource.ColumnCount = 1; | 
|             grdSource.RowCount = 0; | 
|             grdSource.RowHeadersVisible = false; | 
|             grdSource.ColumnHeadersVisible = true; | 
|             grdSource.CellBorderStyle = DataGridViewCellBorderStyle.Sunken; | 
|         } | 
|         //显示 | 
|         private void Display() | 
|         { | 
|             DisplaySource(); | 
|         } | 
|   | 
|         //显示列表 | 
|         private void DisplaySource() | 
|         { | 
|             SQLHelper.ClsCN SubCn = new SQLHelper.ClsCN(); | 
|             DataSet DSet = new DataSet(); | 
|             string HParentID = ""; | 
|             string sWhere = ""; | 
|             string sSql = "select czymc from h_v_Gy_UserList "; | 
|             //树形节点 | 
|             if (CurNode.Name.Trim().Length == 0) | 
|             { | 
|                 HParentID = ""; | 
|             } | 
|             else | 
|             { | 
|                 HParentID = CurNode.Name.Substring(1, CurNode.Name.Length - 1); | 
|             } | 
|             if (HParentID == "0") | 
|             { | 
|                 sWhere = "  order by hczybm"; | 
|             } | 
|             else | 
|             { | 
|                 sWhere = "where groupid='" + HParentID + "'  order by hczybm"; | 
|             } | 
|             //过滤条件 | 
|             sSql = sSql + sWhere; | 
|             // | 
|             DSet = SubCn.RunProcReturn(sSql, ViewName); | 
|             //生成首行标题 | 
|             if (DSet == null) | 
|             { | 
|                 return; | 
|             } | 
|             //  | 
|             grdSource.ColumnCount = DSet.Tables[0].Columns.Count ; | 
|             grdSource.Columns[0].HeaderText = "序号"; | 
|             for (int i = 0; i <= DSet.Tables[0].Columns.Count - 1; i++) | 
|             { | 
|                 grdSource.Columns[i].HeaderText = DSet.Tables[0].Columns[i].Caption; | 
|                 if (DSet.Tables[0].Columns[i].Caption.ToLower().Substring(0, 1) == "h") //首字母为h则隐藏 | 
|                 {  | 
|                     grdSource.Columns[i].Visible = false; | 
|                 } | 
|                 else | 
|                 { | 
|                     grdSource.Columns[i].Visible = true; | 
|                 } | 
|             } | 
|   | 
|             if (DSet.Tables[0].Rows.Count == 0) | 
|             {  | 
|                 return; | 
|             } | 
|             //填充网格 | 
|             string s = ""; | 
|             grdSource.RowCount = DSet.Tables[0].Rows.Count ; | 
|             for (int i = 0; i <= DSet.Tables[0].Rows.Count - 1; i++) | 
|             {  | 
|                 grdSource.Rows[i].Cells[0].Value = i + 1;//序号 | 
|                 for (int j = 0; j <= DSet.Tables[0].Columns.Count - 1; j++) | 
|                 { | 
|                     s = DSet.Tables[0].Rows[i][j].ToString();  | 
|                     grdSource.Rows[i].Cells[j].Value = s; | 
|                 } | 
|             } | 
|               | 
|             //加载列宽 | 
|             DBUtility.ClsPub.GetGridView(grdSource, this.Name + "grdSource", DBUtility.ClsPub.AppPath); | 
|             //  | 
|         } | 
|           | 
|   | 
|         //退出模块 | 
|         private void tc_Click(object sender, EventArgs e) | 
|         { | 
|             this.Close(); | 
|         } | 
|         //刷新 | 
|         private void xs_Click(object sender, EventArgs e) | 
|         { | 
|             initGrid(); | 
|             Display(); | 
|         } | 
|   | 
|         //树型 单击 | 
|         private void tv_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) | 
|         { | 
|             CurNode = e.Node; | 
|             if (CurNode != null) | 
|             { | 
|                 //找到选中结点 | 
|                 initGrid(); | 
|                 Display(); | 
|             } | 
|         } | 
|         //查找结点 | 
|         private void FindRow(string sCode) | 
|         { | 
|             //sCode = sCode.Trim(); | 
|             //char c = Convert.ToChar("-"); | 
|             //string[] s = sCode.Split(c); | 
|             //if (s.Length > 0) | 
|             //{ | 
|             //    sCode = s[0].Trim(); | 
|             //    grdMain.Redraw = VSFlex7.RedrawSettings.flexRDNone; | 
|             //    for (int i = grdMain.FixedRows; i < grdMain.Rows; i++) | 
|             //    { | 
|             //        if (sCode.Trim() == grdMain.get_TextMatrix(i, HNumberCol)) | 
|             //        { | 
|             //            grdMain.TopRow = i; | 
|             //            grdMain.Row = i; | 
|             //        } | 
|             //    } | 
|             //    grdMain.Redraw = VSFlex7.RedrawSettings.flexRDBuffered; | 
|             //} | 
|         } | 
|   | 
|         //选中行是否正常 | 
|         private bool AllowRow() | 
|         { | 
|             if (grdMain.CurrentRow !=null) | 
|                 return true; | 
|             else | 
|                 return false; | 
|         } | 
|         //时间控件 | 
|         private void timer1_Tick(object sender, EventArgs e) | 
|         { | 
|             timer1.Enabled = false; | 
|             Display(); | 
|         } | 
|   | 
|         //删除项目 | 
|         public void Delete() | 
|         { | 
|             if (AllowRow()) | 
|             { | 
|   | 
|   | 
|             } | 
|         } | 
|   | 
|         private void bclk_Click(object sender, EventArgs e) | 
|         { | 
|             //保存列宽 | 
|             DBUtility.ClsPub.SaveGridView(grdMain, this.Name, DBUtility.ClsPub.AppPath); | 
|             DBUtility.ClsPub.SaveGridView(grdSource, this.Name + "grdSource", DBUtility.ClsPub.AppPath); | 
|         } | 
|   | 
|         private void mrlk_Click(object sender, EventArgs e) | 
|         { | 
|             DBUtility.ClsPub.DefaultGridView(grdMain); | 
|             DBUtility.ClsPub.DefaultGridView(grdSource); | 
|         } | 
|   | 
|         //保存GRID列宽 | 
|         private void Gy_UserSelect_FormClosing(object sender, FormClosingEventArgs e) | 
|         {  | 
|         } | 
|         //窗体加载 | 
|         private void Gy_UserSelect_Load(object sender, EventArgs e) | 
|         { | 
|             LoadTree(); | 
|             initGrid(); | 
|             Display(); | 
|         } | 
|   | 
|         //加载树形 | 
|         private void LoadTree() | 
|         { | 
|             try | 
|             { | 
|                 tv.Nodes.Clear(); | 
|                 tv.ImageList = imageList1; | 
|                 TreeNode sNode = tv.Nodes.Add("T0", "用户组", 0, 1); | 
|                 //sNode.Expand(); | 
|                 LoadAllNodes(sNode); | 
|             } | 
|             catch (Exception e) | 
|             { | 
|                 MessageBox.Show("加载树型失败!" + e.Message, "提示"); | 
|             } | 
|         } | 
|         //初始化界面 | 
|         private bool Init() | 
|         { | 
|             return true; | 
|         } | 
|         #endregion | 
|   | 
|         #region 界面控件处理 | 
|   | 
|   | 
|         //保存 | 
|         //private bool Save() | 
|         //{ | 
|         //    if (CurNode.Name == null || CurNode.Name == "") | 
|         //    { | 
|         //        MessageBox.Show("保存失败,选择的结点有异常!"); | 
|         //        return false; | 
|         //    } | 
|         //    try | 
|         //    { | 
|         //        oCn.BeginTran(); | 
|         //        //删除原记录 | 
|         //        oCn.RunProc("Delete From Gy_UserSelect where HUserID='" + CurNode.Name.Trim().Substring(1, CurNode.Name.Trim().Length - 1) + "'"); | 
|         //        //新增记录 | 
|         //        for (int i = grdMain.FixedRows; i < grdMain.Rows; i++) | 
|         //        { | 
|         //            oCn.RunProc("insert into Gy_UserSelect(HCusID,HUserID) values(" + DBUtility.ClsPub.isLong(grdMain.get_TextMatrix(i, 1)) + ",'" + CurNode.Name.Trim().Substring(1, CurNode.Name.Trim().Length - 1) + "') "); | 
|         //        } | 
|         //        oCn.Commit(); | 
|         //    } | 
|         //    catch (Exception e) | 
|         //    { | 
|         //        oCn.RollBack(); | 
|         //        MessageBox.Show("保存失败!" + e.Message); | 
|         //    } | 
|         //    return true; | 
|         //} | 
|         //新增时清空信息 | 
|         private void Sub_Clear() | 
|         { | 
|             return; | 
|             // | 
|         } | 
|   | 
|         //加载子结点 | 
|         private void LoadAllNodes(TreeNode sNode) | 
|         { | 
|             if (sNode != null) | 
|             { | 
|                 try | 
|                 { | 
|                     long sName = Convert.ToInt64(sNode.Name.Substring(1, sNode.Name.Length - 1)); | 
|                     sNode.Nodes.Clear(); | 
|                     DataSet Ds = oCn.RunProcReturn("select  * from System_UserGroup  ", "System_UserGroup"); | 
|                     for (int i = 0; i < Ds.Tables[0].Rows.Count; i++) | 
|                     { | 
|                         TreeNode oNode = sNode.Nodes.Add("T" + Ds.Tables[0].Rows[i]["GroupID"].ToString(), Ds.Tables[0].Rows[i]["GroupName"].ToString(), 0, 1); | 
|                     } | 
|                     sNode.Expand(); | 
|                 } | 
|                 catch (Exception e) | 
|                 { | 
|                     MessageBox.Show("加载子项目失败!" + e.Message, "提示"); | 
|                 } | 
|             } | 
|         } | 
|   | 
|         private void cmdQForward_Click(object sender, EventArgs e) | 
|         { | 
|             if (grdSource.CurrentRow  !=null) | 
|             { | 
|                 grdMain.Rows.Add(); | 
|                 grdMain.Rows[grdMain.RowCount - 1].Cells[2].Value = grdSource.Rows[grdSource.CurrentRow.Index].Cells[0].Value;  | 
|                 grdSource.Rows.RemoveAt(grdSource.CurrentRow.Index); | 
|             } | 
|         } | 
|   | 
|         private void cmdQBack_Click(object sender, EventArgs e) | 
|         { | 
|             if (grdMain.CurrentRow != null) | 
|             { | 
|                 grdSource.Rows.Add(); | 
|                 grdSource.Rows[grdSource.RowCount - 1].Cells[0].Value = grdMain.Rows[grdMain.CurrentRow.Index].Cells[2].Value; | 
|                 grdMain.Rows.RemoveAt(grdMain.CurrentRow.Index); | 
|             } | 
|         } | 
|   | 
|         private void cmdQForwardAll_Click(object sender, EventArgs e) | 
|         { | 
|             int Rows = grdSource.Rows.Count; | 
|             for (int i = Rows - 1; i >= 0; i--) | 
|             { | 
|                 grdMain.Rows.Add(); | 
|                 grdMain.Rows[grdMain.RowCount - 1].Cells[2].Value = grdSource.Rows[i].Cells[0].Value; | 
|                 grdSource.Rows.RemoveAt(i); | 
|             } | 
|         } | 
|         private void cmdQBackAll_Click(object sender, EventArgs e) | 
|         { | 
|             int Rows = grdMain.Rows.Count; | 
|             for (int i = Rows - 1; i >= 0; i--) | 
|             { | 
|                 grdSource.Rows.Add(); | 
|                 grdSource.Rows[grdSource.RowCount - 1].Cells[0].Value = grdMain.Rows[i].Cells[2].Value; | 
|                 grdMain.Rows.RemoveAt(i); | 
|             } | 
|         } | 
|   | 
|         private void cmdCancel_Click(object sender, EventArgs e) | 
|         { | 
|             sReturn = ""; | 
|             IsOk = 2; | 
|             this.Visible = false; | 
|         } | 
|   | 
|         private void cmdOK_Click(object sender, EventArgs e) | 
|         { | 
|             sReturn = ""; | 
|             if (bSingle) | 
|             { | 
|                 if (grdMain.RowCount > 1) | 
|                 { | 
|                     MessageBox.Show("只允许选择一个用户!", "提示"); | 
|                     return; | 
|                 } | 
|             } | 
|             for (int i = 0; i <= grdMain.RowCount-1; i++) | 
|             { | 
|                 sReturn = sReturn + "," + grdMain.Rows[i].Cells[2].Value.ToString(); | 
|             } | 
|             if (sReturn.Trim() != "") | 
|             { | 
|                 sReturn = sReturn.Substring(1, sReturn.Length - 1); | 
|             } | 
|             IsOk = 1; | 
|             this.Visible = false; | 
|         } | 
|   | 
|         private void Gy_UserSelect_Activated(object sender, EventArgs e) | 
|         { | 
|             IsOk = 0; | 
|         } | 
|   | 
|         #endregion | 
|   | 
|         public int i = 0;   //行的下标控制器 (*****控制从第几行开始遍历*****) | 
|         public bool notNull = false;    //递归控制器 (*****控制是否可调用递归******) | 
|         private void cmdHUser_Click(object sender, EventArgs e) | 
|         { | 
|             string sFind = txtHUser.Text.Trim(); | 
|             string sUser = ""; | 
|             foreach (DataGridViewRow dr in grdSource.SelectedRows) //取消行的选中 | 
|             { | 
|                 dr.Selected = false; | 
|             } | 
|             for (int a = i; a <= grdSource.RowCount - 1; a++) | 
|             { | 
|                 sUser = DBUtility.ClsPub.isStrNull(this.grdSource.Rows[a].Cells[0].Value); | 
|                 if (sUser.IndexOf(sFind) != -1) | 
|                 { | 
|                     grdSource.Rows[a].Selected = true;  //如果匹配则选中该行 | 
|                     grdSource.FirstDisplayedScrollingRowIndex = a;  //滚动条滑自该行 | 
|                     i = a + 1;  //使下次遍历从该行的下一行开始查找 | 
|                     notNull = true; | 
|                     return;   //设置notNull为真,跳出 | 
|                 } | 
|             } | 
|             if (notNull) //始终未找到匹配项则进入 | 
|             { | 
|                 i = 0;  //重置从第一行遍历 | 
|                 notNull = false;  //设置notNull为假,如果再一次从第一行遍历未找到匹配项则不会再进入IF调用递归 | 
|                 cmdHUser_Click(sender, e); //递归 | 
|             } | 
|             else | 
|             { | 
|                 MessageBox.Show("未找到!!"); | 
|             } | 
|         } | 
|     } | 
| } |