DataRepeater отображает разные столбцы в каждой записи - PullRequest
1 голос
/ 14 апреля 2011

У меня есть Repeater. Он получает данные из какой-то таблицы. Эта таблица содержит 3 столбца.

Что мне нужно, так это если column1 = true будет отображаться column2 и если column1 = false столбец 3 будет отображаться.

Макет будет примерно таким:

c1 = true  | c2
c1 = true  | c2
c1 = false | c3
c1 = true  | c2
c1 = false | c3

Как мне этого добиться?

Ответы [ 2 ]

2 голосов
/ 14 апреля 2011

Просто используйте Literal в вашем Repeater шаблоне:

<asp:Repeater runat="server" ID="rep"> 
    <ItemTemplate> 
        <asp:Literal runat="server" ID="lit1" OnDataBinding="lit1_DataBinding"></asp:Literal> 
    </ItemTemplate> 
</asp:Repeater>

Затем реализуйте DataBinding:

protected void lit1_DataBinding(object sender, System.EventArgs e)
{
    Literal lit = (Literal)(sender);
    lit.Text = ((bool)(Eval("Column1")) ?
        Eval("Column2").ToString() : Eval("Column3").ToString();
}
0 голосов
/ 14 апреля 2011

Вы можете делать все декларативно без кода:

<asp:Repeater runat="server" ID="rpt">
    <ItemTemplate>
        <%# (bool)Eval("Column1") ? Eval("Column2") : Eval("Column3") %><br />
    </ItemTemplate>
</asp:Repeater>
...