private void DeleteDetail(string sDetailIndex) { if (tvComboDetail.SelectedNode == null) { return; } if (tvComboDetail.SelectedNode.Nodes.Count > 0) { MessageBox.Show("该节点有子节点,不允许删除"); return; } string sComboValue = tvComboDetail.SelectedNode.Text.ToString(); if (tvComboName.SelectedNode != null) { if (DoValidData(sDetailIndex, sComboValue) == true) { MessageBox.Show("该数据已被使用,禁止删除!", "提示"); return; } else if (DoValidData(sDetailIndex, sComboValue) == false) { sDetailIndex = tvComboDetail.SelectedNode.Tag.ToString(); if (SQLDBBase.ExecuteSql("delete from ComboDataDetail where DetailIndex =" + sDetailIndex) > 1) { tvComboDetail.Nodes.Remove(tvComboDetail.SelectedNode); } DoRefreshDetail(); } } }
//加载下拉框内容 private void CreateDetailTree() { tvComboDetail.Nodes.Clear(); if (tvComboName.SelectedNode == null) { return; } //string slctName = tvComboName.SelectedNode.Tag.ToString(); DataTable dt = SQLDBBase.ExecuteDataTable("select ComboDataDetail.* from ComboDataDetail,ComboData where ComboDataDetail.ComboDataIndex = ComboData.ComboDataIndex and ComboData.ComboDataIndex= '" + tvComboName.SelectedNode.Tag.ToString() + "' ORDER BY ComboDataDetail.ComboValueOrder asc"); if (dt == null || dt.Rows.Count < 1) { return; } string sParentIndex = dt.Rows[0]["ComboParentIndex"].ToString(); int nDetailIndex = Convert.ToInt16(dt.Rows[0]["DetailIndex"].ToString()); int nComboDataIndex = Convert.ToInt16(dt.Rows[0]["ComboDataIndex"].ToString()); string sComboValue = dt.Rows[0]["ComboValue"].ToString(); int nComboValueOrder = Convert.ToInt16(dt.Rows[0]["ComboValueOrder"].ToString()); //TreeNode node = tvComboDetail.Nodes.Add(sComboValue); //node.Tag = nDetailIndex; LoadSubDetail(dt, null, "0"); tvComboDetail.CheckBoxes = false; //tvComboDetail.ExpandAll(); }
private void tvComboName_AfterLabelEdit(object sender, NodeLabelEditEventArgs e) { tvComboName.LabelEdit = false; string sComboIndex = tvComboName.SelectedNode.Tag.ToString(); string sComboName = e.Label; SQLDBBase.ExecuteSql(" update ComboData set ComboName ='" + sComboName + "' where ComboDataIndex ='" + sComboIndex + "'"); }
//判断当前下拉框内容是否使用过,使用过返回true(不可被删除),没使用过返回false(可以被删除)。 private bool DoValidData(string sDetailIndex, string sComboValue) { string sql = "select TableName,FieldName from ComboData as c,ComboDataDetail as cd where c.ComboDataIndex = cd.ComboDataIndex and cd.DetailIndex = '" + sDetailIndex + "'"; DataTable dt = SQLDBBase.ExecuteDataTable(sql); string sTableName = dt.Rows[0]["TableName"].ToString(); string sFieldName = dt.Rows[0]["FieldName"].ToString(); string sSQL = "select * from " + sTableName + " where " + sFieldName + " = '" + sComboValue + "'";// return(SQLDBBase.RecordExists(sSQL)); }
//生成下拉框树 private void CreateComboDataTree() { tvComboName.Nodes.Clear(); DataTable dt = SQLDBBase.ExecuteDataTable("select * from ComboData order by ComboDataIndex asc"); if (dt == null || dt.Rows.Count < 1) { return; } LoadComboData(dt, null, "0"); tvComboName.CheckBoxes = false; tvComboName.ExpandAll(); tvComboName.TopNode = tvComboName.Nodes[0];//第一个可见的节点是树里的第一个节点,滚动条就会上去了 }
//获取ComboDataDetail表中,当前选择的下拉框的最大Order private int GetMaxOrder(string sComboDataIndex /*, string mxOrder*/) { string ssql = "select Max(b.ComboValueOrder) from ComboDataDetail as b,ComboData as a where b.ComboDataIndex = a.ComboDataIndex and a.ComboDataIndex = '" + sComboDataIndex + "'"; DataTable dt = SQLDBBase.ExecuteDataTable(ssql); int mxOrder; if (dt.Rows.Count <= 1) { mxOrder = '0'; } else { mxOrder = Convert.ToInt16(dt.Rows[0][0].ToString());//Order最大值 } return(mxOrder); }
private void ChangeDropType() { if (tvComboName.SelectedNode != null) { string sComboIndex = tvComboName.SelectedNode.Tag.ToString(); string sComboType = "-2"; string ssComboType = ""; DataTable dtCombo = SQLDBBase.ExecuteDataTable("select * from ComboData where comboDataIndex = '" + sComboIndex + "'"); string ssComboName = dtCombo.Rows[0]["ComboName"].ToString();//为了实时刷新显示类型 sComboType = dtCombo.Rows[0]["ComboType"].ToString(); //重选类型后刷新下拉框名表内信息 if (sComboType == "-1") { ssComboType = ""; } else if (sComboType == "0") { ssComboType = " (单选)"; } else if (sComboType == "1") { ssComboType = " (多选)"; } if (rbSing.Checked) { sComboType = "0"; tvComboName.SelectedNode.Text = ssComboName + ssComboType; } else if (rbMult.Checked) { sComboType = "1"; tvComboName.SelectedNode.Text = ssComboName + ssComboType; } if (sComboType != null) { SQLDBBase.ExecuteSql("update ComboData set ComboType = '" + sComboType + "'where ComboDataIndex = '" + sComboIndex + "'"); } } }
private void tvComboName_AfterSelect(object sender, TreeViewEventArgs e) { TreeNode node = tvComboName.SelectedNode; string str = node.Text.ToString(); string str1 = str.Remove(str.Length - 4, 4); if (node == null) { return; } //只有最后一层是下拉框名称 可选择单选/复选框 if (tvComboName.SelectedNode.FirstNode == null) { rbMult.Enabled = true; rbSing.Enabled = true; lbComboName.Text = "当前选择的下拉框是:" + str1; } else { lbComboName.Text = "当前选择的下拉框是:"; rbMult.Enabled = false; rbMult.Checked = false; rbSing.Enabled = false; rbSing.Checked = false; } //读取选中项是单选或复选的 int sComboDataIndex = Convert.ToInt16(node.Tag.ToString()); DataTable dt1 = SQLDBBase.ExecuteDataTable("select ComboType from ComboData where ComboDataIndex = '" + sComboDataIndex + "'"); //cbComboType.Text = dt1.Rows[0][0].ToString(); if (dt1.Rows[0][0].ToString() == "0") { rbSing.Checked = true; } else if (dt1.Rows[0][0].ToString() == "1") { rbMult.Checked = true; } CreateDetailTree(); }
//检验数据是否重复录入,返回true则已存在,禁止添加;返回false则不存在,可以添加。 private bool DoRepeat() { string sSQL = "SELECT * FROM ComboDataDetail as c, ComboData as cd WHERE c.ComboDataIndex = cd.ComboDataIndex and cd.ComboDataIndex = '" + tvComboName.SelectedNode.Tag.ToString() + "' and c.ComboValue = '" + TbComboValue.Text.Trim() + "'"; return(SQLDBBase.RecordExists(sSQL)); }
//添加下拉框内容 private void BtnAdd_Click(object sender, EventArgs e) { if (tvComboName.SelectedNode.Nodes.Count > 0) { MessageBox.Show("请选择下拉框输入数据", "提示"); return; } if (DoRepeat() == true) { MessageBox.Show("下拉框中已存在的数据,请重新输入!", "提示"); return; } //tvComboDetail.SelectedNode.FirstNode; if (TbComboValue.Text == "" || tvComboName.SelectedNode == null) { return; } string sComboDataIndex = tvComboName.SelectedNode.Tag.ToString(); int ssMxOrder = GetMaxOrder(sComboDataIndex); //没有选中项 则在最后一项后面添加 if (tvComboDetail.SelectedNode == null) { SQLDBBase.FieldDataItem[] FieldItem = new SQLDBBase.FieldDataItem[15]; int nFieldIndex = -1; FieldItem[++nFieldIndex] = new SQLDBBase.FieldDataItem("ComboDataIndex", sComboDataIndex, SQLDBBase.FieldDataType.Int); FieldItem[++nFieldIndex] = new SQLDBBase.FieldDataItem("ComboValue", TbComboValue.Text.Trim()); FieldItem[++nFieldIndex] = new SQLDBBase.FieldDataItem("ComboValueOrder", ssMxOrder + 1, SQLDBBase.FieldDataType.Int); FieldItem[++nFieldIndex] = new SQLDBBase.FieldDataItem("ComboParentIndex", "0", SQLDBBase.FieldDataType.Int);//在第一层级中添加 if (SQLDBBase.InsertRecord("ComboDataDetail", nFieldIndex + 1, FieldItem) == 1) { //TreeNode node = tvComboDetail.SelectedNode.Nodes.Add(TbComboValue.Text.Trim());BUG 出错!!! object ob = SQLDBBase.GetSingle("select * from ComboDataDetail where ComboParentIndex = '0' and ComboValue='" + TbComboValue.Text.Trim() + "'"); if (ob != null) { TbComboValue.Text = ""; DoRefreshDetail(); } } } else if (tvComboDetail.SelectedNode != null)//有选中项,在选中项中添加子节点 { if (tvComboDetail.SelectedNode == null) { return; } string sDetailIndex = tvComboDetail.SelectedNode.Tag.ToString(); SQLDBBase.FieldDataItem[] FieldItem = new SQLDBBase.FieldDataItem[15]; int nFieldIndex = -1; //FieldItem[++nFieldIndex] = new SQLDBBase.FieldDataItem("DetailIndex", nodeData.nDetailIndex, SQLDBBase.FieldDataType.Int); FieldItem[++nFieldIndex] = new SQLDBBase.FieldDataItem("ComboDataIndex", sComboDataIndex, SQLDBBase.FieldDataType.Int); FieldItem[++nFieldIndex] = new SQLDBBase.FieldDataItem("ComboValue", TbComboValue.Text.Trim()); FieldItem[++nFieldIndex] = new SQLDBBase.FieldDataItem("ComboValueOrder", ssMxOrder + 1, SQLDBBase.FieldDataType.Int); FieldItem[++nFieldIndex] = new SQLDBBase.FieldDataItem("ComboParentIndex", sDetailIndex, SQLDBBase.FieldDataType.Int); if (SQLDBBase.InsertRecord("ComboDataDetail", nFieldIndex + 1, FieldItem) == 1) { TreeNode node = tvComboDetail.SelectedNode.Nodes.Add(TbComboValue.Text.Trim()); TbComboValue.Text = ""; DoRefreshDetail(); } } }