C# 动态jQuery';添加一个文本框';使用C连接到asp:Repeater#

C# 动态jQuery';添加一个文本框';使用C连接到asp:Repeater#,c#,javascript,jquery,html,asp.net,C#,Javascript,Jquery,Html,Asp.net,我遇到了一段代码的问题,该代码用于在ASP中向中继器添加文本框 我有以下资料: <asp:Repeater ID="uxRolesList" runat="server"> <ItemTemplate> <div id="<%# GetRolesDivId() %>" class="div_row"> <asp:TextBox ID="uxTxtBox

我遇到了一段代码的问题,该代码用于在ASP中向中继器添加文本框

我有以下资料:

 <asp:Repeater ID="uxRolesList" runat="server">
          <ItemTemplate>
               <div id="<%# GetRolesDivId() %>" class="div_row">
                    <asp:TextBox ID="uxTxtBoxRole" runat="server" rows="5" columns="100" Text='<%# DataBinder.Eval(Container.DataItem, "RequirementDescription") %>' TextMode="multiline" MaxLength="2000"></asp:TextBox>
                    <input type="button" style="vertical-align:top;" value="X" class="remove-roles-btn" />                           
                    <br /><br />
               </div>
        </ItemTemplate>
 </asp:Repeater>
其中dl=uxRolesList 控件=uxTxtBoxRole

我完全不明白为什么新的值没有通过uxRolesList中继器


我做错了什么?

据我所知,所使用的方法不会显示在Repeater数据源中添加的项目,除非它们在页面提供给用户之前就存在,因此在示例中,只有在离开服务器之前绑定到Repeater的项目(如果有)才会显示


如果您不想在每次单击“添加”按钮时离开页面并访问服务器,我建议您使用名称而不是id(request[“”])通过请求对象访问它们,并保持每个文本框的名称相似(“txtbox1”、“txtbox2”),并像在Jquery代码中那样附加计数,然后,在服务器上,当页面提交时,使用存储在UXTBoxRoleCount中的计数器在项目上循环。

也许在迭代中继器的项目时,请检查
RepeaterItem.ItemType
。它应该是
ListItemType.Item
ListItem.AlternatingItem
<td id="rolesColumn">                
    <div id="roles-0" class="div_row">
         <textarea name="ctl00$mainContent$uxRolesList$ctl00$uxTxtBoxRole" rows="5" cols="100" id="ctl00_mainContent_uxRolesList_ctl00_uxTxtBoxRole">Cool Job1</textarea>
        <input type="button" style="vertical-align:top;" value="X" class="remove-roles-btn" />                           
        <br /><br />
     </div>                    
 </td>
 <asp:Button CssClass="btn" ID="uxAddRoleBtn" runat="server" Text="Add a new role requirement" />
$("#ctl00_mainContent_uxAddRoleBtn").live("click", (function (e) {
        var rolesCounter = $('#ctl00_mainContent_uxTxtBoxRolesCount').val();

        if (rolesCounter < 10) {
            var rolesCounterText = "0" + rolesCounter;
        } else {
            var rolesCounterText = rolesCounter;
        }                     

        $('#rolesColumn').append("<div id='roles-" + rolesCounter + "' class='div_row'><textarea name='ctl00$mainContent$uxRolesList$ctl" + rolesCounterText + "$uxTxtBoxRole' rows='5' cols='100' id='ctl00_mainContent_uxRolesList_ctl" + rolesCounterText + "_uxTxtBoxRole' MaxLength='2000' ></textarea><input type='submit' name='ctl00$mainContent$uxRolesList$ctl" + rolesCounterText + "$uxRemoveRoleBtn' value='X' id='ctl00_mainContent_uxRolesList_ctl" + rolesCounterText + "_uxRemoveRoleBtn' class='remove-roles-btn' style='vertical-align:top;' /><br /><span id='ctl00_mainContent_uxRolesList_ctl" + rolesCounterText + "_uxValTxtBoxRole' style='color:Red;visibility:hidden;'>Please complete this role requirement</span><br /><br /></div>");
        e.preventDefault();
        rolesCounter++;
        $('#ctl00_mainContent_uxTxtBoxRolesCount').val(rolesCounter);
    }));
<div id="roles-0" class="div_row">
  <textarea id="ctl00_mainContent_uxRolesList_ctl00_uxTxtBoxRole" cols="100" rows="5" name="ctl00$mainContent$uxRolesList$ctl00$uxTxtBoxRole">Cool Job1</textarea><input class="remove-roles-btn" type="button" value="X" style="vertical-align:top;"><br><br>
</div>
<div id="roles-1" class="div_row">
  <textarea id="ctl00_mainContent_uxRolesList_ctl01_uxTxtBoxRole" maxlength="2000" cols="100" rows="5" name="ctl00$mainContent$uxRolesList$ctl01$uxTxtBoxRole">Test</textarea><input class="remove-roles-btn" type="submit" style="vertical-align:top;" value="X" name="ctl00$mainContent$uxRolesList$ctl01$uxRemoveRoleBtn"><br><br>
</div>
foreach (RepeaterItem item in dl.Items)
    {
        System.Web.UI.WebControls.TextBox rb = item.FindControl(control) as System.Web.UI.WebControls.TextBox;

        if (rb.Text.Trim() != "")
        {
            PositionRequirement pr = new PositionRequirement();
            pr.RequirementDescription = rb.Text;
            pr.RequirementLevel = new PositionRequirementLevel(level, levelDescription);
            pr.OrderNumber = i;
            i++;
            positionRequirements.Add(pr);
        }
    }