void RenderBorrow( OpacApplication app, SessionInfo sessioninfo, XmlDocument dom) { string strReaderType = DomUtil.GetElementText(dom.DocumentElement, "readerType"); // 获得日历 string strError = ""; /* * Calendar calendar = null; * int nRet = app.GetReaderCalendar(strReaderType, out calendar, out strError); * if (nRet == -1) * { * this.SetDebugInfo("warninginfo", strError); * calendar = null; * } * */ // return: // null xml文件不存在,或者<borrowInfoControl>元素不存在 string strColumnStyle = GetColumnStyle(app); if (strColumnStyle == null) { strColumnStyle = ""; // 2009/11/23 防止ToLower()抛出异常 } // 借阅的册 PlaceHolder borrowinfo = (PlaceHolder)this.FindControl("borrowinfo"); // 清空集合 this.BorrowBarcodes = new List <string>(); string strReaderBarcode = DomUtil.GetElementText(dom.DocumentElement, "barcode"); XmlNodeList nodes = dom.DocumentElement.SelectNodes("borrows/borrow"); this.BorrowLineCount = nodes.Count; for (int i = 0; i < nodes.Count; i++) { PlaceHolder line = (PlaceHolder)borrowinfo.FindControl("borrowinfo_line" + Convert.ToString(i)); if (line == null) { Control insertpos = borrowinfo.FindControl("borrowinfo_insertpos"); line = NewBorrowLine(insertpos.Parent, i, insertpos); // this.BorrowLineCount++; } line.Visible = true; LiteralControl left = (LiteralControl)line.FindControl("borrowinfo_line" + Convert.ToString(i) + "left"); CheckBox checkbox = (CheckBox)line.FindControl("borrowinfo_line" + Convert.ToString(i) + "checkbox"); LiteralControl right = (LiteralControl)line.FindControl("borrowinfo_line" + Convert.ToString(i) + "right"); XmlNode node = nodes[i]; string strBarcode = DomUtil.GetAttr(node, "barcode"); // 添加到集合 this.BorrowBarcodes.Add(strBarcode); string strNo = DomUtil.GetAttr(node, "no"); string strBorrowDate = DomUtil.GetAttr(node, "borrowDate"); string strPeriod = DomUtil.GetAttr(node, "borrowPeriod"); string strOperator = DomUtil.GetAttr(node, "operator"); string strRenewComment = DomUtil.GetAttr(node, "renewComment"); string strOverDue = ""; bool bOverdue = false; // 是否超期 DateTime timeReturning = DateTime.MinValue; string strTips = ""; #if NO if (strColumnStyle.ToLower() == "style1") { DateTime timeNextWorkingDay; long lOver = 0; string strPeriodUnit = ""; // 获得还书日期 // return: // -1 数据格式错误 // 0 没有发现超期 // 1 发现超期 strError中有提示信息 // 2 已经在宽限期内,很容易超期 nRet = app.GetReturningTime( calendar, strBorrowDate, strPeriod, out timeReturning, out timeNextWorkingDay, out lOver, out strPeriodUnit, out strError); if (nRet == -1) { strOverDue = strError; } else { strTips = strError; if (nRet == 1) { bOverdue = true; strOverDue = " (" + string.Format(this.GetString("已超期s"), // 已超期 {0} app.GetDisplayTimePeriodStringEx(lOver.ToString() + " " + strPeriodUnit)) + ")"; /* * strOverDue = " (已超期 " + lOver.ToString() + " " + app.GetDisplayTimeUnitLang(strPeriodUnit) + ")"; * */ } } } else { // string strError = ""; // 检查超期情况。 // return: // -1 数据格式错误 // 0 没有发现超期 // 1 发现超期 strError中有提示信息 nRet = app.CheckPeriod( calendar, strBorrowDate, strPeriod, out strError); if (nRet == -1) { strOverDue = strError; } else { if (nRet == 1) { bOverdue = true; } strOverDue = strError; // 其他无论什么情况都显示出来 } } #endif string strResult = ""; string strTrClass = " class='dark' "; if ((i % 2) == 1) { strTrClass = " class='light' "; } strResult += "<tr " + strTrClass + " nowrap><td class='barcode' nowrap>"; // 左 left.Text = strResult; // checkbox // checkbox.Text = Convert.ToString(i + 1); // 右开始 strResult = " "; strResult += "<a href='book.aspx?barcode=" + strBarcode + "&borrower=" + strReaderBarcode + "'>" + strBarcode + "</a></td>"; #if NO // 获得摘要 string strSummary = ""; string strBiblioRecPath = ""; long lRet = sessioninfo.Channel.GetBiblioSummary( null, strBarcode, null, null, out strBiblioRecPath, out strSummary, out strError); if (lRet == -1 || lRet == 0) { strSummary = strError; } /* * LibraryServerResult result = app.GetBiblioSummary( * sessioninfo, * strBarcode, * null, * null, * out strBiblioRecPath, * out strSummary); * if (result.Value == -1 || result.Value == 0) * strSummary = result.ErrorInfo; * */ #endif strResult += "<td class='summary pending' width='50%'>" + strBarcode + "</td>"; strResult += "<td class='no' nowrap align='right'>" + strNo + "</td>"; // 续借次 strResult += "<td class='borrowdate' nowrap>" + OpacApplication.LocalDateOrTime(strBorrowDate, strPeriod) + "</td>"; strResult += "<td class='borrowperiod' nowrap>" + app.GetDisplayTimePeriodStringEx(strPeriod) + "</td>"; strOverDue = DomUtil.GetAttr(node, "overdueInfo"); string strOverdue1 = DomUtil.GetAttr(node, "overdueInfo1"); string strIsOverdue = DomUtil.GetAttr(node, "isOverdue"); if (strIsOverdue == "yes") { bOverdue = true; } string strTimeReturning = DomUtil.GetAttr(node, "timeReturning"); if (String.IsNullOrEmpty(strTimeReturning) == false) { timeReturning = DateTimeUtil.FromRfc1123DateTimeString(strTimeReturning).ToLocalTime(); } if (strColumnStyle.ToLower() == "style1") { strTips = strOverDue; strOverDue = strOverdue1; if (bOverdue == true) { strResult += "<td class='returningdate overdue'>" + "<a title=\"" + strTips.Replace("\"", "'") + "\">" + OpacApplication.LocalDateOrTime(timeReturning, strPeriod) // + timeReturning.ToString("d") + strOverDue + "</a>" + "</td>"; } else { strResult += "<td class='returningdate'>" + "<a title=\"" + strTips.Replace("\"", "'") + "\">" + OpacApplication.LocalDateOrTime(timeReturning, strPeriod) // + timeReturning.ToString("d") + strOverDue + "</a>" + "</td>"; } } else { if (bOverdue == true) { strResult += "<td class='overdue'>" + strOverDue + "</td>"; } else { strResult += "<td class='notoverdue'>" + strOverDue + "</td>"; } } strResult += "<td class='renewcomment'>" + strRenewComment.Replace(";", "<br/>") + "</td>"; strResult += "<td class='operator' nowrap>" + strOperator + "</td>"; strResult += "</tr>"; right.Text = strResult; } // 把多余的行隐藏起来 for (int i = nodes.Count; ; i++) { PlaceHolder line = (PlaceHolder)borrowinfo.FindControl("borrowinfo_line" + Convert.ToString(i)); if (line == null) { break; } line.Visible = false; } if (nodes.Count == 0) { Control insertpos = borrowinfo.FindControl("borrowinfo_insertpos"); int pos = insertpos.Parent.Controls.IndexOf(insertpos); if (pos == -1) { // text-level: 内部错误 throw new Exception("插入参照对象没有找到"); } LiteralControl literal = new LiteralControl(); literal.Text = "<tr class='dark'><td colspan='8'>" + this.GetString("(无借阅信息)") + "<td></tr>"; insertpos.Parent.Controls.AddAt(pos, literal); } }