Я пытаюсь сделать таблицу Repeater видимой = false - PullRequest
0 голосов
/ 03 августа 2010

У меня есть система управления документами, которая создает отчет, показывающий людей, которым принадлежит какой документ. Бывают случаи, когда у людей есть 0 документов, и в этом случае я бы хотел, чтобы таблица повторителей не была видна этому человеку. Я некоторое время оглядывался по сторонам, и мне не очень повезло, может быть, потому что я новичок или, может быть, потому что я не нашел свой ответ.

У меня есть повторители, вложенные в повторители, но если первый повторитель не виден, остальные должны следовать.

файл aspx

                    <h3> <%# DataBinder.Eval(Container.DataItem, "FullNm") %></h3>
                    <table ID="CollectorTable" runat="server" class="report-totals">
                        <tr>
                            <th>Total Collected:</th>
                            <td><asp:Literal ID="CollectorTotalCollected" runat="server" /></td>

                            <td class="report-totals-spacer"></td>

                            <th>Total Contacted:</th>
                            <td><asp:Literal ID="CollectorTotalContacted" runat="server" /></td>

                            <td class="report-totals-spacer"></td>

                            <th></th>
                            <td></td>
                        </tr>
                    </table>
               // etc....

Код позади

        // ...pull totals
        Control CollectorRepeater = new Control();
        CollectorRepeater = (Control)e.Item.FindControl("CollectorRepeater");
        CollectorRepeater.Visible = false;

        Repeater collectorData = (Repeater)item.FindControl("CollectedTableRepeater");
        collectorData.DataSource = collectedDocuments;
        collectorData.DataBind();

        Repeater contactedData = (Repeater)item.FindControl("ContactedTableRepeater");
        contactedData.DataSource = contactedDocuments;
        contactedData.DataBind();

Ответы [ 3 ]

1 голос
/ 03 августа 2010

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

Repeater collectorData = (Repeater)item.FindControl("CollectedTableRepeater1");
Repeater contactedData = (Repeater)item.FindControl("ContactedTableRepeater2");
if( collectedDocuments.Tables[0].Rows.Count > 0 ){
        //if there is data(more than 0 rows), bind it
        collectorData.DataSource = collectedDocuments;
        collectorData.DataBind();

        contactedData.DataSource = contactedDocuments;
        contactedData.DataBind();
} else {
        collectorData.Visible = False;
        //optional display "No data found" message
        contactedData.Visible = False;
}
0 голосов
/ 04 августа 2010

Вы можете сделать точно так же, как сказал "rlb.usa", или просто заменить else деталь на:

else {
        collectorData.DataSource = null;
        collectorData.DataBind();

        contactedData.DataSource = null;
        contactedData.DataBind();
}
0 голосов
/ 03 августа 2010

В приведенном ниже коде в событии повторителя ItemCreated вы можете проверить количество документов и связать его только с элементом повторителя, если количество данных превышает 0.

...