如何在ItemDataBound事件期间向asp转发器添加空行?

时间:2013-10-09 11:57:36

标签: asp.net repeater

我将转发器与SqlDataReader绑定,但我想要当repater没有行而不是在ItemDataBound Event中添加空行

3 个答案:

答案 0 :(得分:4)

1-首先创建一个DataTable对象来保存数据

2-如果为零则检查DataTable中的行数然后将空DataRow对象添加到DataTable

3-将转发器绑定到DataTable而不是绑定到Datareader对象

if(dt.Rows.Count==0)
{
DataRow dr=dt.NewRow();
dt.Rows.Add(dr);
}

rptDemo.DataSource=dt;
rptDemo.DataBind();

答案 1 :(得分:0)


试试这个。 在FooterTemplate中将标签放置在转发器的页脚中,默认情况下将visible设置为false,当Item countBound为0或小于1时,将ItemDataBound设置为visible = true。

<asp:Repeater ID="rptDemo" runat="server"
OnItemDataBound="rptDemo_ItemDataBound">
<ItemTemplate>
    .......
</ItemTemplate>
<FooterTemplate>
    <%-- Label used for no data available --%>
    <asp:Label ID="lblMsg" runat="server" CssClass="errMsg" Text="Sorry, no item is there to show." Visible="false">
    </asp:Label>
</FooterTemplate>

  protected void rptDemo_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        if (rptDemo.Items.Count < 1)
        {
            if (e.Item.ItemType == ListItemType.Footer)
            {
                Label lblFooter = (Label)e.Item.FindControl("lblMsg");
                lblFooter.Visible = true;
            }
        }
    }

希望这有帮助!

答案 2 :(得分:0)

我的要求是在转发器中显示添加行。我通过做一个小的检查包括一个空白行作为最后一项,在所有其他行中,空白行被隐藏。

使用

<%# (((IList)((Repeater)Container.Parent).DataSource).Count).ToString() == (Container.ItemIndex + 1).ToString() %> 

检查以决定是否显示或隐藏空行。

完整的观点代码:

<table>
    <asp:Repeater ID="repeater1" OnItemCommand="repeater_user_Itemcommand" runat="server">
        <HeaderTemplate>
            <tr>
                <td>
                    Name
                </td>
                <td>
                    Email
                </td>
                <td>
                    Delete
                </td>
            </tr>
        </HeaderTemplate>
        <ItemTemplate>
            <tr>
                <td>
                    <asp:Label ID="lblName" runat="server" Text='<%# DataBinder.Eval(Container.DataItem,"Name") %>'></asp:Label>
                </td>
                <td>
                    <asp:Label ID="lblEmail" runat="server" Text='<%# Eval("Email") %>'></asp:Label>
                </td>
                <td>
                    <asp:LinkButton ID="btnDelete" runat="server" CommandArgument='<%# Eval("ID") %>'
                        CommandName="delete">Delete</asp:LinkButton>
                </td>
            </tr>
            <tr id="Tr1" runat="server" visible='<%# (((IList)((Repeater)Container.Parent).DataSource).Count).ToString() == (Container.ItemIndex + 1).ToString() %>'>
                <td>
                    <asp:TextBox ID="txtName_add" runat="server" Enabled="True" Text='' Visible="false"></asp:TextBox>
                </td>
                <td>
                    <asp:TextBox ID="txtEmail_add" runat="server" Text='' Visible="false"></asp:TextBox>
                </td>
                <td>
                    <asp:LinkButton ID="btnShowAdd" runat="server" CommandName="add">Add</asp:LinkButton>
                </td>
            </tr>
        </ItemTemplate>
    </asp:Repeater>
</table>