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();
4

3 に答える 3

1

したがって、バインドする前に、またはリピーターの 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;
}
于 2010-08-03T18:46:05.180 に答える
0

コード ビハインドでは、リピーターのItemCreatedイベントでドキュメント カウントをチェックし、データのカウントが 0 より大きい場合にのみリピーター アイテム内のテーブルをバインドできます。

于 2010-08-03T18:47:49.043 に答える
0

「rlb.usa」が言ったのとまったく同じようにするか、そのelse部分を次のように置き換えることができます。

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

        contactedData.DataSource = null;
        contactedData.DataBind();
}
于 2010-08-03T21:28:48.007 に答える