1

Web ページで動的に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 に答える