本文整理汇总了C#中DataReader.GetReaders方法的典型用法代码示例。如果您正苦于以下问题:C# DataReader.GetReaders方法的具体用法?C# DataReader.GetReaders怎么用?C# DataReader.GetReaders使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DataReader
的用法示例。
在下文中一共展示了DataReader.GetReaders方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ProcessItemRepeaterElement
private void ProcessItemRepeaterElement(RepeaterElement itemRepeaterElement, DataReader reader, int index,
XElement previous)
{
var readers = reader.GetReaders(itemRepeaterElement.Expression);
var itemRepeaterTag = GenerateItemRepeaterTag(itemRepeaterElement);
var parser = new ItemRepeaterParser();
parser.Parse(itemRepeaterTag, readers.ToList());
}
示例2: RenderDataReaders
private XElement RenderDataReaders(ItemRepeaterTag tag, DataReader dataReader, XElement current)
{
var elements = TraverseUtils.ElementsBetween(tag.StartItemRepeater,
((tag.EndItemRepeater.Parent.Name == WordMl.ParagraphName)
&& (!tag.EndItemRepeater.Parent.Elements().Contains(tag.StartItemRepeater))
&& (tag.StartItemRepeater.Parent.Elements().Any(el => el.IsSdt() && !el.IsTag("itemrepeater")))
) ? tag.EndItemRepeater.Parent : tag.EndItemRepeater)
.Select(MakeElementCallback)
.ToList();
var processedElements = new List<ItemRepeaterElement>();
if (elements.Count > 1)
{
processedElements.AddRange(this.CreateParagraphForInlineElements(elements));
}
else
{
processedElements.Add(elements[0]);
}
processedElements = this.SetRepeaterElementsVisible(processedElements.ToList()).ToList();
var flgWrapInline = false;
if (processedElements.Count == 1)
{
var rootContainer = processedElements.FirstOrDefault();
if ((rootContainer != null) && rootContainer.XElement.Name.Equals(WordMl.ParagraphName))
{
var originalContainer = elements[0].XElement.Parent;
var endItemRepeater = originalContainer.Elements().FirstOrDefault(el => el.IsTag("enditemrepeater"));
if (endItemRepeater != null)
{
flgWrapInline = elements.All(e => e.XElement.Parent.Elements().Contains(endItemRepeater));
}
}
}
var dataReaders = dataReader.GetReaders(tag.Source).ToList();
for (var index = 1; index <= dataReaders.Count; index++)
{
ICollection<XElement> bisectElements;
var ifCount = 1;
var flg = false;
processedElements = this.MarkInvisibleElements(processedElements, dataReaders[index - 1], ref ifCount, ref flg, index == dataReaders.Count).ToList();
if (ifCount != 1)
{
throw new Exception("RItemIf error. Check REndIf count.");
}
var inlineWrapping = (index > 1) && flgWrapInline;
if (inlineWrapping)
{
current = current.Elements().Last();
}
current = this.ProcessElements(
inlineWrapping ? processedElements.First().Elements.ToList() : processedElements,
dataReaders[index - 1],
inlineWrapping ? null : current,
inlineWrapping ? current.Parent : null,
index,
out bisectElements,
(index > 1) && flgWrapInline);
}
return current;
}
示例3: ProcessElements
private XElement ProcessElements(IEnumerable<ItemRepeaterElement> elements, DataReader dataReader, XElement start, XElement parent, int index, ref XElement nestedRepeaterEndElement, ref XElement endIfElement, bool nestedElement = false)
{
XElement result = null;
XElement previous = start;
foreach (var itemRepeaterElement in elements)
{
var flgStucturedElementProcessed = this.CheckAndProcessStartIfElementForContinue(itemRepeaterElement,
dataReader,
ref endIfElement)
||
this.CheckAndProcessEndIfElementForContinue(itemRepeaterElement,
ref endIfElement)
||
this.CheckAndProcessEndItemRepeaterElementForContinue(
itemRepeaterElement, ref nestedRepeaterEndElement)
|| this.CheckTableElementForContinue(itemRepeaterElement);
if (!flgStucturedElementProcessed)
{
var flgNestedElementCheckedForContinue = this.CheckNestedConditionElementForContinue(
itemRepeaterElement, endIfElement)
||
this.CheckNestedElementForContinue(elements.First(),
itemRepeaterElement,
nestedRepeaterEndElement);
if (!flgNestedElementCheckedForContinue)
{
if (itemRepeaterElement.IsItemHtmlContent)
{
result = HtmlContentProcessor.MakeHtmlContentProcessed(itemRepeaterElement.XElement,
dataReader.ReadText(
itemRepeaterElement.Expression),
true);
}
else if (itemRepeaterElement.IsItemRepeater)
{
var itemRepeaterTag = new ItemRepeaterTag()
{
StartItemRepeater = itemRepeaterElement.StartTag,
EndItemRepeater = itemRepeaterElement.EndTag,
Source = itemRepeaterElement.Expression
};
var itemRepeaterGenerator = new ItemRepeaterGenerator();
previous = itemRepeaterGenerator.Generate(itemRepeaterTag,
dataReader.GetReaders(itemRepeaterTag.Source),
previous, parent);
nestedRepeaterEndElement = itemRepeaterTag.EndItemRepeater;
result = null;
}
else if (itemRepeaterElement.IsIndex)
{
result = DocxHelper.CreateTextElement(itemRepeaterElement.XElement,
itemRepeaterElement.XElement.Parent,
index.ToString(CultureInfo.CurrentCulture),
!nestedElement);
}
else if (itemRepeaterElement.IsItem)
{
result = DocxHelper.CreateTextElement(itemRepeaterElement.XElement,
itemRepeaterElement.XElement.Parent,
dataReader.ReadText(itemRepeaterElement.Expression),
dataReader.ReadAttribute(itemRepeaterElement.Expression, "style"),
!nestedElement);
}
else if (itemRepeaterElement.IsItemTable)
{
result = ItemTableGenerator.ProcessItemTableElement(itemRepeaterElement.StartTag, itemRepeaterElement.EndTag,
dataReader);
if (nestedElement)
{
previous.AddAfterSelf(result);
previous = result;
result = null;
}
}
else
{
var element = new XElement(itemRepeaterElement.XElement);
element.RemoveNodes();
result = element;
if (itemRepeaterElement.HasElements)
{
var parsedLastElement = this.ProcessElements(itemRepeaterElement.Elements, dataReader,
previous,
result, index, ref nestedRepeaterEndElement,
ref endIfElement, true);
if (itemRepeaterElement.Elements.Any(ire => ire.XElement.IsSdt()) && DocxHelper.IsEmptyParagraph(result))
{
result = null;
}
if (itemRepeaterElement.Elements.Any(ire => ire.IsItemTable) ||
itemRepeaterElement.Elements.Any(
ire =>
ire.IsItemRepeater && !CheckInlineWrappingMode(ire.StartTag, ire.EndTag)))
{
previous = parsedLastElement;
}
}
//.........这里部分代码省略.........
示例4: ProcessElements
private XElement ProcessElements(IEnumerable<RepeaterElement> elements, DataReader dataReader, XElement start, XElement parent, int index, ref XElement endIfElement, ref XElement nestedRepeaterEndElement, ref XElement currentEndItemTable, bool nested = false)
{
XElement result = null;
XElement previous = start;
//if ((parent != null) && (!parent.Name.Equals(WordMl.TableCellName)))
//{
elements = elements.Where(el => !this.IsItemRepeaterElement(el.XElement)).ToList();
//}
foreach (var repeaterElement in elements )//elements.Where(el => !this.IsItemRepeaterElement(el.XElement)).ToList())
{
if (nestedRepeaterEndElement != null)
{
if (repeaterElement.XElement.Equals(nestedRepeaterEndElement))
{
nestedRepeaterEndElement = null;
}
continue;
}
if (currentEndItemTable != null)
{
if (repeaterElement.XElement.Equals(currentEndItemTable))
{
currentEndItemTable = null;
}
continue;
}
if (repeaterElement.IsEndItemIf /*&& repeaterElement.XElement.Equals(endIfElement)*/)
{
//endIfElement = null;
if (repeaterElement.XElement.Equals(endIfElement))
{
endIfElement = null;
}
continue;
}
if ((endIfElement != null) && !repeaterElement.XElement.Name.Equals(WordMl.ParagraphName))
{
continue;
}
if (repeaterElement.IsItemIf)
{
this.ProcessItemIfElement(repeaterElement, dataReader, ref endIfElement);
continue;
}
if (repeaterElement.IsItemTable)
{
/*currentEndItemTable = RepeaterParser.FindEndTag(repeaterElement.XElement, "itemtable",
"enditemtable");*/
currentEndItemTable = repeaterElement.EndTag;
}
/*
if (repeaterElement.IsEndItemTable /*|| (repeaterElement.XElement.Name.Equals(WordMl.TableName) && repeaterElement.XElement.Descendants().Any(el => el.IsSdt())))
{
continue;
}*/
if (repeaterElement.IsItemHtmlContent)
{
result = HtmlContentProcessor.MakeHtmlContentProcessed(repeaterElement.XElement, dataReader.ReadText(repeaterElement.Expression), true);
}
else if (repeaterElement.IsItemTable)
{
result = ItemTableGenerator.ProcessItemTableElement(repeaterElement.StartTag, repeaterElement.EndTag,
dataReader);
if (nested)
{
previous.AddAfterSelf(result);
previous = result;
result = null;
}
}
else if (repeaterElement.IsItemRepeater)
{
var itemRepeaterTag = new ItemRepeaterTag()
{
StartItemRepeater = repeaterElement.StartTag,
EndItemRepeater = repeaterElement.EndTag,
Source = repeaterElement.Expression
};
var itemRepeaterGenerator = new ItemRepeaterGenerator();
previous = itemRepeaterGenerator.Generate(itemRepeaterTag,
dataReader.GetReaders(repeaterElement.Expression),
previous, parent, true);
result = null;
nestedRepeaterEndElement = repeaterElement.EndTag;
}
else if (repeaterElement.IsIndex)
{
result = DocxHelper.CreateTextElement(repeaterElement.XElement, repeaterElement.XElement.Parent, index.ToString(CultureInfo.CurrentCulture));
}
else if (repeaterElement.IsItem && repeaterElement.HasExpression)
{
result = DocxHelper.CreateTextElement(repeaterElement.XElement, repeaterElement.XElement.Parent, dataReader.ReadText(repeaterElement.Expression), dataReader.ReadAttribute(repeaterElement.Expression, "style"));
}
else
{
var element = new XElement(repeaterElement.XElement);
element.RemoveNodes();
result = element;
if (repeaterElement.HasElements)
//.........这里部分代码省略.........
示例5: ProcessItemRepeaterElement
private void ProcessItemRepeaterElement(TableElement itemRepeaterElement, DataReader dataReader, int index,
XElement previous)
{
var expression = itemRepeaterElement.Expression;
var readers = dataReader.GetReaders(expression);
var itemRepeaterTag = GenerateItemRepeaterTag(itemRepeaterElement);
var generator = new ItemRepeaterGenerator();
generator.Generate(itemRepeaterTag, readers.ToList());
}