1

我知道这Repeater Control是用来data source在网页上动态显示数据的。
但是我想使用转发器控件从用户那里获取输入并根据用户请求生成新的输入字段。谁能帮助我如何通过后面的代码添加一个新的中继器。
我有以下中继器:

<asp:Repeater ID="RepeaterDetailsRow" runat="server">
          <HeaderTemplate>
            <div class="divSection">
            <div class="divFieldContent" style="width:auto;">
                <asp:CheckBox ID="CheckBoxDetails" runat="server" AutoPostBack="True" 
                    oncheckedchanged="CheckBoxDetails_CheckedChanged" />
            </div>
            <div class="divFieldContent">
                <asp:Label ID="lblDetails" runat="server" Text="Enter Details" 
                    ForeColor="Coral" Font-Bold="True" Enabled="False"></asp:Label>
            </div>
              <asp:Button ID="AddNewRow" runat="server" Text="Button" />
            </div> 
          </HeaderTemplate>
          <ItemTemplate>
            <div class="divSectionContent">
            <div class="divFieldContent">
                <asp:Label ID="lblName" runat="server" 
                    Text="Name"></asp:Label>
            </div>
            <div class="divFieldContent">
              <div>
                <asp:TextBox ID="txtName" CssClass="boxes"runat="server">                    </asp:TextBox>               
              </div>
              </div>                    
          </div>              
            <div class="divSectionContent">
            <div class="divFieldContent">
                <asp:Label ID="lblSubject" runat="server" 
                    Text="Subject" Enabled="False"></asp:Label>
            </div>
            <div class="divFieldContent">
                <div>
                  <asp:DropDownList ID="ddl_RejectReasonCode" CssClass="boxes" 
                   runat="server">
                  <asp:ListItem>Select Subject</asp:ListItem>
            <asp:ListItem>Subject1</asp:ListItem>
            <asp:ListItem>Subject2</asp:ListItem>
            <asp:ListItem>Subject3</asp:ListItem>      
                  </asp:DropDownList>
                </div>
                                </div>
          </div>
          </ItemTemplate>
        </asp:Repeater>   

我想在转发器的标题模板中的按钮的项目命令属性上添加与转发器的项目模板对应的行。

4

4 回答 4

2

在 ASPX 页面中

你应该包括

中继器标签中的OnItemCommand="RepeaterDetailsRow_ItemCommand"看起来像

<asp:Repeater ID="RepeaterDetailsRow" runat="server" OnItemCommand="RepeaterDetailsRow_ItemCommand">

和按钮 AddNewRow 的 CommandName

<asp:Button ID="AddNewRow" runat="server" Text="Button" CommandName="Add"/>

在代码隐藏中

protected void RepeaterDetailsRow_ItemCommand(object source, RepeaterCommandEventArgs e)
{
    if (e.CommandName == "Add")
    {
        //save the data to the database 
        LoadData(); //again rebind the repeater with data from db
    }    
}
于 2013-01-07T09:45:34.717 回答
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:14:35.707 回答
0

您基本上必须重新绑定列表并添加一个空项目。这是使用数据绑定控件完成事情的常见方式。您不能将项目动态添加到我知道的转发器。

于 2013-01-03T13:04:18.657 回答
0
you could try with this:

    Protected Sub btn_Click(sender As Object, e As EventArgs)
        Dim r As Integer = TablaRepeater.Rows.Count
        Dim t As Integer = r + 1
        TablaRepeaterCF.Rows.Add(t)
        Repeater.DataSource = TablaRepeater
        Repeater.DataBind()
    End Sub

添加 Onclick 事件

<asp:Button runat="server" ID="btn" Text="+" CssClass="btn btn-primary active" OnClick="btn_Click" />
于 2020-04-07T14:25:37.240 回答