int FillList(bool bSort, out string strError) { strError = ""; // int nRet = 0; this.listView_number.Items.Clear(); this.MaxNumber = ""; // 获得server url if (String.IsNullOrEmpty(this.LibraryServerName) == true) { strError = "尚未指定服务器名"; goto ERROR1; } dp2Server server = this.MainForm.Servers.GetServerByName(this.LibraryServerName); if (server == null) { strError = "服务器名为 '" + this.LibraryServerName + "' 的服务器不存在..."; goto ERROR1; } string strServerUrl = server.Url; this.Channel = this.Channels.GetChannel(strServerUrl); /* if (dom == null) { strError = "请先调用GetGlobalCfgFile()函数"; return -1; } * */ if (this.ClassNumber == "") { strError = "尚未指定分类号"; return -1; } if (this.BiblioDbName == "") { strError = "尚未指定书目库名"; return -1; } EnableControls(false); stop.OnStop += new StopEventHandler(this.DoStop); stop.Initial("正在检索同类书记录 ..."); stop.BeginLoop(); this.Update(); this.MainForm.Update(); try { string strQueryXml = ""; long lRet = Channel.SearchUsedZhongcihao( stop, GetZhongcihaoDbGroupName(this.BiblioDbName), // "!" + this.BiblioDbName, this.ClassNumber, "zhongcihao", out strQueryXml, out strError); if (lRet == -1) goto ERROR1; if (lRet == 0) { strError = "没有命中的记录。"; return 0; // not found } long lHitCount = lRet; long lStart = 0; long lPerCount = Math.Min(50, lHitCount); ZhongcihaoSearchResult[] searchresults = null; if (stop != null) stop.SetProgressRange(0, lHitCount); // 装入浏览格式 for (; ; ) { Application.DoEvents(); // 出让界面控制权 if (stop != null) { if (stop.State != 0) { strError = "用户中断"; goto ERROR1; } } long lCurrentPerCount = lPerCount; bool bShift = Control.ModifierKeys == Keys.Shift; string strBrowseStyle = "cols"; if (bShift == true || this.checkBox_returnBrowseCols.Checked == false) { strBrowseStyle = ""; lCurrentPerCount = lPerCount * 10; } stop.SetMessage("正在装入浏览信息 " + (lStart + 1).ToString() + " - " + (lStart + lPerCount).ToString() + " (命中 " + lHitCount.ToString() + " 条记录) ..."); lRet = Channel.GetZhongcihaoSearchResult( stop, GetZhongcihaoDbGroupName(this.BiblioDbName), // "!" + this.BiblioDbName, "zhongcihao", // strResultSetName lStart, lPerCount, strBrowseStyle, // style this.Lang, out searchresults, out strError); if (lRet == -1) goto ERROR1; if (lRet == 0) { strError = "未命中"; goto ERROR1; } // 处理浏览结果 for (int i = 0; i < searchresults.Length; i++) { ZhongcihaoSearchResult result_item = searchresults[i]; ListViewItem item = new ListViewItem(); item.Text = result_item.Path; item.SubItems.Add(result_item.Zhongcihao); if (result_item.Cols != null) { ListViewUtil.EnsureColumns(this.listView_number, result_item.Cols.Length + 1); for (int j = 0; j < result_item.Cols.Length; j++) { ListViewUtil.ChangeItemText(item, j + 2, result_item.Cols[j]); } } this.listView_number.Items.Add(item); if (stop != null) stop.SetProgressValue(lStart + i + 1); } lStart += searchresults.Length; if (lStart >= lHitCount || lPerCount <= 0) break; } } finally { stop.EndLoop(); stop.OnStop -= new StopEventHandler(this.DoStop); stop.Initial(""); stop.HideProgress(); EnableControls(true); } if (bSort == true) { // 排序 this.listView_number.ListViewItemSorter = new ZhongcihaoListViewItemComparer(); this.listView_number.ListViewItemSorter = null; // 把重复种次号的事项用特殊颜色标出来 ColorDup(); this.MaxNumber = GetTopNumber(this.listView_number); // this.listView_number.Items[0].SubItems[1].Text; } return 0; ERROR1: return -1; }