вложенный словарь к вложенному повторителю asp.net c#

Вы можете легко использовать собственный CSSOM браузера для анализа CSS:

var rulesForCssText = function (styleContent) {
    var doc = document.implementation.createHTMLDocument(""),
        styleElement = document.createElement("style");

   styleElement.textContent = styleContent;
    // the style will only be parsed once it is added to a document
    doc.body.appendChild(styleElement);

    return styleElement.sheet.cssRules;
};

Для каждого возвращенного правила вы можете посмотреть свойства в rule.style. См. http://jsfiddle.net/v2JsZ/ для примера.

7
задан 29 May 2009 в 20:03
поделиться

3 ответа

Если вам действительно нужно использовать вложенные повторители, это возможно, но заставить его работать не особо очевидно. Следующее будет работать (упрощено для краткости):

<asp:Repeater id="level1" OnItemDataBound="level1_ItemDataBound" ...>
  <ItemTemplate>
    <asp:Repeater id="level2" OnItemDataBound="level2_ItemDataBound" ...>
      <ItemTemplate>
        <asp:Repeater id="level3" OnItemDataBound="level3_ItemDataBound" ...>
        </asp:Repeater>
      </ItemTemplate>
    </asp:Repeater>
  </ItemTemplate>
</asp:Repeater>

Код позади:

protected void Page_Load(object sender, EventArgs e)
{
    Dictionary<string, Dictionary<string, List<info>>> branch = ...;
    level1.DataSource = branch;
    level1.DataBind();
}

protected void level1_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    Dictionary<string, List<info>> data = (Dictionary<string, List<info>>)e.Item.DataItem;
    Repeater level2 = e.Item.FindControl("level2") as Repeater;
    level2.DataSource = data;
    level2.DataBind();
}

protected void level2_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
    List<info> data = (List<info>)e.Item.DataItem;
    Repeater level3 = e.Item.FindControl("level3") as Repeater;
    level3.DataSource = data;
    level3.DataBind();
}

protected void level3_ItemDataBound(object sender, RepeaterItemEventArgs e)
{
   // Bind properties from info elements in List<info> here
}
15
ответ дан 6 December 2019 в 07:07
поделиться

asp: TreeView? Не знаю, как он будет обрабатывать вложенный набор данных, но он предназначен для его отображения.

1
ответ дан 6 December 2019 в 07:07
поделиться

Есть лучший способ сделать это без каких-либо событий ItemDataBound. Для простоты предположим, что два уровня повторителей.

<asp:Repeater id="level1" >
   <ItemTemplate>
     <asp:Repeater id="level2" 
          DataSource='<%# ((System.Collections.Generic.KeyValuePair<string,System.Collections.Generic.List<string>>)Container.DataItem).Value %>' >
      <ItemTemplate>
           <%# Container.DataItem %>
       </ItemTemplate>
      </asp:Repeater>
   </ItemTemplate>
 </asp:Repeater>

Я обычно предпочитаю этот способ,

9
ответ дан 6 December 2019 в 07:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: