I have a dynamically added delete button on my page, and it’s working only after the second click, not on the first.
After the page is loaded, when I’m trying to delete a user on the first click, it doesn’t respond at all, only after the second click.
I have tried many combinations with the page_load
/ display user, nothing works.
What is the reason?
This is my code behind:
public partial class UserPageDB : System.Web.UI.Page
{
private static List<User> users;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
users = UserDao.GetUsersDB();
// DisplayUsers();
}
// DisplayUsers();
DisplayUsers();
Debug.WriteLine("page_load");
}
private void DisplayUsers()
{
while (UsersTable.Rows.Count > 1)
UsersTable.Rows.RemoveAt(1);
foreach (var user in users)
{
TableRow row = new TableRow();
row.Cells.Add(new TableCell { Text = user.GetUsername() });
row.Cells.Add(new TableCell { Text = user.GetPassword() });
row.Cells.Add(new TableCell { Text = user.GetFirstName() });
row.Cells.Add(new TableCell { Text = user.GetLastName() });
row.Cells.Add(new TableCell { Text = user.GetEmail() });
row.Cells.Add(new TableCell { Text = user.GetBirthday().ToString("yyyy-MM-dd") });
row.Cells.Add(new TableCell { Text = user.GetCity() });
row.Cells.Add(new TableCell { Text = user.GetIsAdmin() ? "Admin" : "no Admin" });
// Create the delete button
Button deleteButton = new Button();
deleteButton.Text = "X";
deleteButton.CommandName = "Delete";
deleteButton.CommandArgument = user.GetUsername(); // Pass username or other identifier
deleteButton.Click += new EventHandler(DeleteUserDB); // Event handler
deleteButton.Attributes.Add("runat", "server");
// I create the TableCell for deleting user, and I add the button to it
TableCell delete = new TableCell();
delete.Controls.Add(deleteButton);
row.Cells.Add(delete);
UsersTable.Rows.Add(row);
}
}
protected void DeleteUserDB(object sender, EventArgs e)
{
Debug.WriteLine("deleting... ");
UserDao.DeleteUser(((Button)sender).CommandArgument);
ErrorMsg.Text = "User deleted successfully";
ErrorMsg.Style.Add("Color", "Yellow");
users = UserDao.GetUsersDB();
DisplayUsers();
}
}
ASPX page:
<asp:Table runat="server" ID="UsersTable" BorderWidth="1" GridLines="Both" CellPadding="10">
<asp:TableHeaderRow ID="Table1HeaderRow" BackColor="LightBlue" runat="server">
<asp:TableHeaderCell Scope="Column" Text="Username" />
<asp:TableHeaderCell Scope="Column" Text="Password" />
<asp:TableHeaderCell Scope="Column" Text="First Name" />
<asp:TableHeaderCell Scope="Column" Text="Last Name" />
<asp:TableHeaderCell Scope="Column" Text="Email" />
<asp:TableHeaderCell Scope="Column" Text="Birthday" />
<asp:TableHeaderCell Scope="Column" Text="City" />
<asp:TableHeaderCell Scope="Column" Text="Role" />
<asp:TableHeaderCell Scope="Column" Text="Delete" />
</asp:TableHeaderRow>
</asp:Table>
<div class="addUserAdmin" runat="server">