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("未找到!!"); } } } }