private void listView_tags_SelectedIndexChanged(object sender, EventArgs e) { if (this.listView_tags.SelectedItems.Count == 1) { ItemInfo item_info = (ItemInfo)this.listView_tags.SelectedItems[0].Tag; OneTag tag = item_info.OneTag; // var tag_info = tag.TagInfo; this.SelectedTag = tag; this.button_OK.Enabled = true; this.chipEditor1.LogicChipItem = item_info.LogicChipItem; if (string.IsNullOrEmpty(item_info.Xml) == false) { BookItem book_item = new BookItem(); int nRet = book_item.SetData("", item_info.Xml, null, out string strError); if (nRet == -1) { // 如何报错? } else { this.propertyGrid_record.SelectedObject = book_item; } } else { this.propertyGrid_record.SelectedObject = null; } } else { this.chipEditor1.LogicChipItem = null; this.propertyGrid_record.SelectedObject = null; this.SelectedTag = null; this.button_OK.Enabled = false; } }
// parameters: // refid_change_table 修改过的refid。key为旧值,value为新值 /// <summary> /// 根据一个 XML 字符串内容,构建出集合内的若干事项 /// </summary> /// <param name="nodeItemCollection">XmlNode对象,本方法将使用其下属的 dprms:item 元素来构造事项</param> /// <param name="list">ListView 对象。构造好的事项会显示到其中</param> /// <param name="bRefreshRefID">构造事项的过程中,是否要刷新每个事项的 RefID 成员值</param> /// <param name="refid_change_table">返回修改过的refid。key为旧值,value为新值</param> /// <param name="strError">返回出错信息</param> /// <returns>-1: 出错。错误信息在 strError 中; 0: 成功</returns> public int ImportFromXml(XmlNode nodeItemCollection, ListView list, bool bRefreshRefID, out Hashtable refid_change_table, out string strError) { strError = ""; refid_change_table = new Hashtable(); int nRet = 0; if (nodeItemCollection == null) return 0; XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable()); nsmgr.AddNamespace("dprms", DpNs.dprms); XmlNodeList nodes = nodeItemCollection.SelectNodes("dprms:item", nsmgr); for (int i = 0; i < nodes.Count; i++) { XmlNode node = nodes[i]; BookItem book_item = new BookItem(); nRet = book_item.SetData("", node.OuterXml, null, out strError); if (nRet == -1) return -1; if (bRefreshRefID == true) { string strOldRefID = book_item.RefID; book_item.RefID = Guid.NewGuid().ToString(); if (String.IsNullOrEmpty(strOldRefID) == false) { refid_change_table[strOldRefID] = book_item.RefID; } } this.Add(book_item); book_item.ItemDisplayState = ItemDisplayState.New; book_item.AddToListView(list); book_item.Changed = true; } // 更换<binding>元素内<item>元素的refID属性值 if (bRefreshRefID == true && refid_change_table.Count > 0) { foreach (BookItem item in this) { nRet = item.ReplaceBindingItemRefID(refid_change_table, out strError); if (nRet == -1) return -1; } } return 0; }
// parameters: // refid_change_table 修改过的refid。key为旧值,value为新值 /// <summary> /// 根据一个 XML 字符串内容,构建出集合内的若干事项 /// </summary> /// <param name="nodeItemCollection">XmlNode对象,本方法将使用其下属的 dprms:item 元素来构造事项</param> /// <param name="list">ListView 对象。构造好的事项会显示到其中</param> /// <param name="bRefreshRefID">构造事项的过程中,是否要刷新每个事项的 RefID 成员值</param> /// <param name="refid_change_table">返回修改过的refid。key为旧值,value为新值</param> /// <param name="strError">返回出错信息</param> /// <returns>-1: 出错。错误信息在 strError 中; 0: 成功</returns> public int ImportFromXml(XmlNode nodeItemCollection, ListView list, bool bRefreshRefID, out Hashtable refid_change_table, out string strError) { strError = ""; refid_change_table = new Hashtable(); int nRet = 0; if (nodeItemCollection == null) { return(0); } XmlNamespaceManager nsmgr = new XmlNamespaceManager(new NameTable()); nsmgr.AddNamespace("dprms", DpNs.dprms); XmlNodeList nodes = nodeItemCollection.SelectNodes("dprms:item", nsmgr); for (int i = 0; i < nodes.Count; i++) { XmlNode node = nodes[i]; BookItem book_item = new BookItem(); nRet = book_item.SetData("", node.OuterXml, null, out strError); if (nRet == -1) { return(-1); } if (bRefreshRefID == true) { string strOldRefID = book_item.RefID; book_item.RefID = Guid.NewGuid().ToString(); if (String.IsNullOrEmpty(strOldRefID) == false) { refid_change_table[strOldRefID] = book_item.RefID; } } this.Add(book_item); book_item.ItemDisplayState = ItemDisplayState.New; book_item.AddToListView(list); book_item.Changed = true; } // 更换<binding>元素内<item>元素的refID属性值 if (bRefreshRefID == true && refid_change_table.Count > 0) { foreach (BookItem item in this) { nRet = item.ReplaceBindingItemRefID(refid_change_table, out strError); if (nRet == -1) { return(-1); } } } return(0); }