0

我有一个文档管理系统,它创建一个报告,显示拥有哪个文档的人。有时人们有 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 回答