public Form1(string tblname, string catfield, Class1 cls, SqlConnection conn, bool isReadOnly) { InitializeComponent(); TblName = tblname; CatField = catfield; MyParentClass = cls; Conn = conn; buttonItemID.Checked = DisplayID; buttonItemLevel.Checked = DisplayLevel; TblLock = new TableLock(Conn, TblName); TblLock.UnLock(); OrderLock = new TableLock(Conn, orderTable); OrderLock.UnLock(); LastVer = TblLock.GetServerLastVersion(); LastOrderVer = OrderLock.GetServerLastVersion(); this.m_isReadOnly = isReadOnly; }
// 填充树结点 public TreeView ReloadTree() { htQuestIdTreeNode = new Hashtable(); htQuestIdTreeNode.Clear(); theTree.Nodes.Clear(); TblLock = new TableLock(Conn, TblName); OrderLock = new TableLock(Conn, orderTable); if (!Logic.ReInit(SelectSql, Conn)) { return null; } Tbl = Logic.QuestTable; // 默认值结点 TreeNode newNode = theTree.Nodes.Add("<默认值>"); object[] keys = new object[1]; keys[0] = "-1"; newNode.Tag = keys; // 构造tree // 分类结点 string sql = string.Format("SELECT {0} FROM {1} GROUP BY {2}", CatField, TblName, CatField); DataTable tblCats = Helper.GetDataTable(sql, Conn); foreach (DataRow row in tblCats.Rows) { string catname = row[0].ToString().Trim(); TreeNode catnode = theTree.Nodes.Add(catname); object[] catkeys = new object[1]; catkeys[0] = "-2"; catnode.Tag = catkeys; catnode.ForeColor = ColorNodeCat; catnode.ImageIndex = ImageCat; catnode.SelectedImageIndex = ImageSelectedCat; } treeData.CheckIDCompare(Conn); // 自动检测匹配tbl_quests与sys_quests_order表的questID字段 // 默认行 defaultRow = Tbl.Rows[0]; // StartID 初始化 StartIDs = new object[Tbl.PrimaryKey.Length]; for (int i = 0; i < StartIDs.Length; i++) { string field = Tbl.PrimaryKey[i].ColumnName; string sQl = string.Format("SELECT * FROM sys_id_pool WHERE tablename='{0}' AND fieldname='{1}'", TblName, field); DataTable t = Helper.GetDataTable(sQl, Conn); if (t.Rows.Count > 0) StartIDs[i] = Convert.ToInt32(t.Rows[0]["lastid"]); else StartIDs[i] = 1; } // 记录结点 foreach (DataRow row in Tbl.Rows) { string quest_name = row["QuestName"].ToString().Trim(); int quest_id = Convert.ToInt32(row["QuestID"]); // 跳过默认值 if (quest_id == 0) continue; FindingIDList = new ArrayList(); FindingIDList.Add(quest_id); try { newNode = AddQuestNode(quest_id); } catch (Exception ex) { if (showError) // 是否显示错误信息 { string err = string.Format("未能添加 {0} 号任务。" + "\r\n\r\n错误信息为:{1}。\n\n是否在这次初始化树结点时忽略此类信息?", quest_id, ex.Message); DialogResult result = MessageBox.Show(err, "添加结点时发生错误", MessageBoxButtons.YesNo); if (result == DialogResult.Yes) { showError = false; } } } FindingIDList.Clear(); } treeData.InitTreeOrder(Conn, theTree); // 初始化树结点序号 htQuestIdTreeNode.Clear(); htQuestIdTreeNode = null; return theTree; }