简体   繁体   中英

Delete Row Button won't Fire on Dynamic Table Asp.net

I've created a table in which you can add a user and it generates a new row every time in a dynamic table. Each row is supposed to have a button with a minus sign that allows you to delete a row. For some reason I can't get my button to fire with either "onclick" or an event handler click. The "subtractbutton" button is supposed to call the "subtractUser" method on the server side. When I click the subtract button on any row, it just eliminates the whole table due to the postback.

protected void Page_Load(object sender, EventArgs e)
{


    if (!IsPostBack) {  Cache["CurrentUsersTable"] = new Table(); }
    if (IsPostBack)
    {

    }

}

protected void click_NewUser(object sender, EventArgs e)
{

}
protected void click_NewCompany(object sender, EventArgs e)
{

}
protected void click_ImportCSV(object sender, EventArgs e)
{

}

protected void click_AddCompanyUser(object sender, EventArgs e)
{
    addUserToTable(sender, e);
}

protected void click_AddIndividualUser(object sender, EventArgs e)
{
    addUserToTable(sender, e);
}

protected void subtractUser(object sender, EventArgs e)
{
    string deletionName = "";
    List<HtmlGenericControl> userrows = new List<HtmlGenericControl>();
    if (Cache["CurrentUserRowList"] != null) { userrows = (List<HtmlGenericControl>)Cache["CurrentUserRowList"]; }
    userrows.Find(x => x.InnerText == deletionName);

}

protected void addUserToTable(object sender, EventArgs e)
{
    Table currentuserstable = (Table)Cache["CurrentUsersTable"];


    //For each new user added, create a row

    TableRow trow = new TableRow();

    TableCell td2 = new TableCell();
    td2.Attributes.Add("style", "width: 100px");
    td2.Text = "First Last";
    TableCell td3 = new TableCell();
    td3.Attributes.Add("style", "width: 331px");
    RadioButtonList group = new RadioButtonList();
    group.Attributes.Add("ID", "GroupRadio");
    group.Attributes.Add("runat", "server");
    group.RepeatDirection = RepeatDirection.Horizontal;
    group.Items.Add(new ListItem("Core", "Core"));
    group.Items.Add(new ListItem("Extended", "Extended"));
    group.Items.Add(new ListItem("Advisory", "Advisory"));
    group.Items.Add(new ListItem("None", "None"));
    td3.Controls.Add(group);
    TableCell td4 = new TableCell();
    CheckBoxList role = new CheckBoxList();
    role.Attributes.Add("ID", "roleRadio");
    role.Attributes.Add("runat", "server");
    role.RepeatDirection = RepeatDirection.Horizontal;
    role.Items.Add(new ListItem("Participant", "Participant"));
    role.Items.Add(new ListItem("Admin", "Admin"));
    role.Items.Add(new ListItem("Reviewer", "Reviewer"));
    td4.Attributes.Add("style", "width: 331px");
    td4.Controls.Add(role);
    TableCell td5 = new TableCell();
    RadioButtonList seniority = new RadioButtonList();
    seniority.Attributes.Add("ID", "seniorityRadio");
    seniority.Attributes.Add("runat", "server");
    seniority.RepeatDirection = RepeatDirection.Horizontal;
    seniority.Items.Add(new ListItem("Core", "Core"));
    seniority.Items.Add(new ListItem("Extended", "Extended"));
    seniority.Items.Add(new ListItem("Advisory", "Advisory"));
    seniority.Items.Add(new ListItem("None", "None"));
    td5.Controls.Add(seniority);
    TableCell td = new TableCell();
    td.Attributes.Add("style", "width: 47px");
    Button subtractbutton = new Button();
    subtractbutton.Text = "-";
    subtractbutton.Attributes.Add("style", "btn");
    subtractbutton.Attributes.Add("runat", "server");
    subtractbutton.Click += new System.EventHandler(subtractUser);
    td.Controls.Add(subtractbutton);
    trow.Controls.Add(td);
    trow.Controls.Add(td2);
    trow.Controls.Add(td3);
    trow.Controls.Add(td4);
    trow.Controls.Add(td5);

    //Add row to Cache list
    trow.ID = td2.Text + "Row";
    currentuserstable.Rows.Add(trow);


    Cache["CurrentUsersTable"] = currentuserstable;
    update_CurrentUsers.ContentTemplateContainer.Controls.Add(currentuserstable);


}



}

    <div class="row">
        <div class="col-md-12">
            <h1>New Project</h1>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <h4>Project Name</h4>
        </div>
        <div class="col-md-3">
            <input runat="server" id="edit_ProjectName" class="form-control">
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <h4>Project Companies</h4>
        </div>
        <div class="col-md-3">
            <input class="form-control" runat="server" id="edit_CompanyName" placeholder="Company Name">
        </div>
        <div class="col-md-12"><button type="button" runat="server" id="btn_NewCompany" onclick="click_NewCompany" class="btn btn-default" style="width: 252px">+ New Company&nbsp;</button></div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <h3>Users</h3>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <div class="col-md-3">
                <h4>Add Company Users</h4>
            </div>
            <div class="col-md-3">
                <h4>Add Individual Users</h4>
            </div>
            <div class="col-md-3"></div>
        </div>
    </div>
    <asp:Panel Cssclass="row" runat="server">
        <asp:Panel Cssclass="col-md-12" runat="server">
            <div class="col-md-3" runat="server">
                <div class="row" runat="server">
               <asp:UpdatePanel runat="server"><ContentTemplate>
                <asp:button type="submit"  runat="server" onclick="click_AddCompanyUser" id="btn_AddCompanyUsers" Text="+" class="btn"/>
                <input runat="server" id="edit_AddCompanyUsers" class="form-control-loose">   </ContentTemplate></asp:UpdatePanel>               
                </div>
                </div>
            <asp:UpdatePanel runat="server"><ContentTemplate>
            <asp:panel runat="server" Cssclass="col-md-3">
                <asp:button type="submit" runat="server"  onclick="click_AddIndividualUser" UseSubmitBehavior="false"  id="btn_AddIndividualUsers" Text="+" class="btn"/>
                <input runat="server" id="edit_AddIndividualUsers" class="form-control-loose">
                <asp:button runat="server" Text="+New User" class="btn btn-default" style="width: 244px" OnClick="click_NewUser"></asp:button>
            </asp:panel></ContentTemplate></asp:UpdatePanel>
            <div class="col-md-3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <button type="button" onclick="click_ImportCSV" class="btn btn-default">Import from CSV</button></div>
        </asp:Panel>
    </asp:Panel>
    <div class="row">
        <div class="col-md-12">
            <h3>Current Users</h3>
        </div>
    </div>
    <div class="row">
        <div class="panel-heading" data-brix_class="1454831583299">
            <div class="col-sm-1">
                <h4>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; User</h4>
            </div>
            <div class="col-md-4">
                <h4>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Group</h4>
            </div>
            <div class="col-md-3">
                <h4>&nbsp; Role(s)</h4>
            </div>
            <div class="col-md-3">
                <h4>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Seniority</h4>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-14">
            <div class="panel"><!-- Default panel contents --><!-- Table -->
                 <asp:UpdatePanel ID="update_CurrentUsers" runat="server"><ContentTemplate>
                     </ContentTemplate></asp:UpdatePanel>
            </div>
        </div>
    </div>
    <div class="row">
        <div class="col-md-12">
            <h3>Additional Attributes</h3>
        </div>
        <div class="col-md-12">To be Determined</div>
    </div>
<br />
    <div class="row">
        <div class="col-md-12"><button type="button" class="btn btn-default">Save &amp; Continue</button><asp:linkbutton runat="server" PostBackUrl="~/Admin/Projects.aspx" type="button" Text="Cancel" class="btn btn-link"/></div>
    </div>

Since this one is a dynamic table, you will need to add this back into the container from the cache every time there is a postback.

if (IsPostBack)
    {
        Cache["CurrentUsersTable"] = currentuserstable;
        update_CurrentUsers.ContentTemplateContainer.Controls.Add(currentuserstable);
    }

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM