本文整理汇总了C#中LibraryChannel.Search方法的典型用法代码示例。如果您正苦于以下问题:C# LibraryChannel.Search方法的具体用法?C# LibraryChannel.Search怎么用?C# LibraryChannel.Search使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类LibraryChannel
的用法示例。
在下文中一共展示了LibraryChannel.Search方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SearchAllBatchNo
// 检索出盘点库内全部批次号名称
int SearchAllBatchNo(
LibraryChannel channel,
Stop stop,
string strInventoryDbName,
out string strError)
{
strError = "";
this.listView_records.Items.Clear();
// EnableControls(false);
stop.OnStop += new StopEventHandler(channel.DoStop);
stop.Initial("正在列出全部批次号 ...");
stop.BeginLoop();
try
{
// 构造检索式
StringBuilder text = new StringBuilder();
text.Append("<target list='"
+ StringUtil.GetXmlStringSimple(strInventoryDbName + ":" + "批次号")
+ "'>");
// 当前是否为全局用户
bool bGlobalUser = this._libraryCodeList.Count == 0 || this._libraryCodeList.IndexOf("") != -1;
// 全局用户只认列表中 "" 一个值。这样可以检索出全部批次号,包括各个分馆的
if (bGlobalUser == true && this._libraryCodeList.Count != 1)
{
this._libraryCodeList.Clear();
this._libraryCodeList.Add("");
}
int i = 0;
foreach (string librarycode in this.LibraryCodeList)
{
if (i > 0)
text.Append("<operator value='OR' />");
text.Append("<item><word>"
+ StringUtil.GetXmlStringSimple(bGlobalUser ? "" : librarycode + "-")
+ "</word><match>left</match><relation>=</relation><dataType>string</dataType><maxCount>-1</maxCount></item><lang>zh</lang>");
i++;
}
if (bGlobalUser == true)
{
if (i > 0)
text.Append("<operator value='OR' />");
// 针对空批次号的检索。空只能被全局用户可见
text.Append("<item><word>"
+ StringUtil.GetXmlStringSimple("")
+ "</word><match>exact</match><relation>=</relation><dataType>string</dataType><maxCount>-1</maxCount></item><lang>zh</lang>");
i++;
}
text.Append("</target>");
#if NO
// 构造检索式
string strQueryXml = "<target list='"
+ StringUtil.GetXmlStringSimple(strInventoryDbName + ":" + "批次号")
+ "'><item><word>"
+ StringUtil.GetXmlStringSimple("")
+ "</word><match>left</match><relation>=</relation><dataType>string</dataType><maxCount>-1</maxCount></item><lang>zh</lang>";
strQueryXml += "<operator value='OR' />";
strQueryXml += "<item><word>"
+ StringUtil.GetXmlStringSimple("")
+ "</word><match>exact</match><relation>=</relation><dataType>string</dataType><maxCount>-1</maxCount></item><lang>zh</lang></target>";
#endif
long lRet = channel.Search(
stop,
text.ToString(),
"batchno",
"keycount", // strOutputStyle
out strError);
if (lRet == 0)
{
strError = "not found";
return 0; // not found
}
if (lRet == -1)
return -1;
long lHitCount = lRet;
long lStart = 0;
long lCount = lHitCount;
DigitalPlatform.CirculationClient.localhost.Record[] searchresults = null;
// 装入浏览格式
for (; ; )
{
Application.DoEvents(); // 出让界面控制权
if (stop != null && stop.State != 0)
{
strError = "用户中断";
return -1;
//.........这里部分代码省略.........
示例2: DoLogicSearch
// 逻辑检索
// 本函数不负责清除浏览列表中的已有内容
int DoLogicSearch()
{
string strError = "";
int nRet = 0;
this._processing++;
try
{
long lHitCount = 0;
long lLoaded = 0;
List<QueryItem> items = null;
nRet = this.dp2QueryControl1.BuildQueryXml(
this.SearchMaxCount,
"zh",
out items,
out strError);
if (nRet == -1)
goto ERROR1;
// 修改窗口标题
this.Text = "dp2检索窗 逻辑检索";
#if NO
ClearListViewPropertyCache();
if ((Control.ModifierKeys & Keys.Control) == Keys.Control)
{
// 按住Ctrl键的时候,不清除listview中的原有内容
}
else
{
// this.listView_browse.Items.Clear();
ClearListViewItems();
}
#endif
bool bFillBrowseLine = true;
if ((Control.ModifierKeys & Keys.Shift) == Keys.Shift)
{
bFillBrowseLine = false;
}
this.textBox_resultInfo.Clear();
this.EnableControlsInSearching(false);
stop.OnStop += new StopEventHandler(this.DoStop);
stop.Initial("正在检索 ...");
stop.BeginLoop();
this.m_bInSearching = true;
long lTotalHitCount = 0;
int nErrorCount = 0;
this.listView_browse.BeginUpdate();
try
{
for (int j = 0; j < items.Count; j++)
{
if (stop != null)
{
if (stop.State != 0)
{
strError = "用户中断";
goto ERROR1;
}
}
QueryItem item = items[j];
string strServerName = item.ServerName;
dp2Server server = this.dp2ResTree1.Servers.GetServerByName(strServerName);
if (server == null)
{
strError = "名为 '" + strServerName + "' 的服务器在检索窗中尚未定义...";
goto ERROR1;
}
string strServerUrl = server.Url;
this.Channel = this.Channels.GetChannel(strServerUrl);
string strOutputStyle = "id";
long lRet = Channel.Search(stop,
item.QueryXml,
"default",
strOutputStyle,
out strError);
if (lRet == -1)
{
this.textBox_resultInfo.Text += "检索式 '" + item.QueryXml + "' 检索时发生错误:" + strError + "\r\n";
nErrorCount++;
continue;
}
//.........这里部分代码省略.........
示例3: SearchComments
// 检索出评注数据
// return:
// 命中的全部结果数量。
public static long SearchComments(
OpacApplication app,
LibraryChannel channel,
string strBiblioRecPath,
out string strError)
{
strError = "";
// string strXml = "";
Debug.Assert(String.IsNullOrEmpty(strBiblioRecPath) == false, "");
//string strBiblioDbName = ResPath.GetDbName(strBiblioRecPath);
string strBiblioDbName = StringUtil.GetDbName(strBiblioRecPath);
if (String.IsNullOrEmpty(strBiblioDbName) == true)
{
strError = "从书目记录路径 '" + strBiblioRecPath + "' 中无法获得库名部分";
return -1;
}
string strCommentDbName = "";
// 根据书目库名, 找到对应的评注库名
// return:
// -1 出错
// 0 没有找到
// 1 找到
int nRet = app.GetCommentDbName(strBiblioDbName,
out strCommentDbName,
out strError);
if (nRet == -1)
return -1;
//string strBiblioRecId = ResPath.GetRecordId(strBiblioRecPath);
string strBiblioRecId = StringUtil.GetRecordId(strBiblioRecPath);
string strQueryXml = "<target list='"
+ StringUtil.GetXmlStringSimple(strCommentDbName + ":" + "父记录") // 2007/9/14
+ "'><item><order>DESC</order><word>"
+ strBiblioRecId
+ "</word><match>exact</match><relation>=</relation><dataType>string</dataType><maxCount>-1</maxCount></item><lang>zh</lang></target>";
// LibraryChannel channel = this.GetChannel(true, this.m_strParameters);
try
{
long lRet = //this.Channel.
channel.Search(
null,
strQueryXml,
"default",
"", // strOuputStyle
out strError);
if (lRet == -1)
return -1;
if (lRet == 0)
{
strError = "没有找到";
return 0;
}
return lRet;
}
finally
{
// this.ReturnChannel(channel);
}
}
示例4: ThreadFillAmercedMain
/*public*/
void ThreadFillAmercedMain()
{
string strError = "";
m_bStopFillAmerced = false;
LibraryChannel channel = new LibraryChannel();
channel.Url = this.MainForm.LibraryServerUrl;
channel.BeforeLogin += new BeforeLoginEventHandle(Channel_BeforeLogin);
channel.AfterLogin += new AfterLoginEventHandle(Channel_AfterLogin);
try
{
string strResultSetName = "";
// 获得一些系统参数
string strDbName = "违约金";
string strQueryXml = "";
string strLang = "zh";
long lRet = Channel.GetSystemParameter(
stop,
"amerce",
"dbname",
out strDbName,
out strError);
if (lRet == -1)
goto ERROR1;
if (m_bStopFillAmerced == true)
return;
// 2010/12/16 change
if (lRet == 0 || String.IsNullOrEmpty(strDbName) == true)
{
if (String.IsNullOrEmpty(strError) == true)
strError = "违约金库名没有配置。";
goto ERROR1;
}
if (string.IsNullOrEmpty(this.FillAmercedParam.ReaderBarcode) == false)
{
Safe_clearList(this.listView_amerced);
string strFrom = "读者证条码";
string strMatchStyle = "exact";
// 2007/4/5 改造 加上了 GetXmlStringSimple()
strQueryXml = "<target list='" + strDbName + ":" + strFrom + "'><item><word>"
+ StringUtil.GetXmlStringSimple(this.FillAmercedParam.ReaderBarcode)
+ "</word><match>" + strMatchStyle + "</match><relation>=</relation><dataType>string</dataType><maxCount>-1</maxCount></item><lang>" + strLang + "</lang></target>";
strResultSetName = "amercing";
} // end of strReaderBarcode != ""
else
{
if (this.FillAmercedParam.IDs == null || this.FillAmercedParam.IDs.Count == 0)
{
strError = "IDs 参数不能为空";
goto ERROR1;
}
string strFrom = "ID";
string strMatchStyle = "exact";
strQueryXml = "<target list='" + strDbName + ":" + strFrom + "'>";
for (int i = 0; i < this.FillAmercedParam.IDs.Count; i++)
{
string strID = this.FillAmercedParam.IDs[i];
if (i > 0)
strQueryXml += "<operator value='OR' />";
strQueryXml += "<item><word>"
+ StringUtil.GetXmlStringSimple(strID)
+ "</word><match>" + strMatchStyle + "</match><relation>=</relation><dataType>string</dataType><maxCount>-1</maxCount></item><lang>" + strLang + "</lang>";
}
strQueryXml += "</target>";
strResultSetName = "amerced";
}
// 开始检索
lRet = channel.Search(
stop,
strQueryXml,
strResultSetName,
"", // strOutputStyle
out strError);
if (lRet == 0)
{
strError = "not found";
return; // not found
}
if (lRet == -1)
goto ERROR1;
if (m_bStopFillAmerced == true)
return;
//.........这里部分代码省略.........