3

我将转发器与 SqlDataReader 绑定,但是当转发器没有行时,我希望在 ItedDataBound 事件中添加空白行

4

3 回答 3

5

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();
于 2013-10-09T12:28:20.033 回答
0


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

<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;
            }
        }
    }

希望这可以帮助!

于 2013-10-09T12:22:09.637 回答
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>
于 2013-11-13T13:16:54.153 回答