События не будут срабатывать при нажатии кнопки - PullRequest
0 голосов
/ 24 октября 2019

Я сделал сайт для проекта, на который можно зарегистрироваться. Он подключен к базе данных SQL.

Я пытаюсь создать страницу, на которой администраторы могут видеть информацию о различных существующих пользователях, а также удалить некоторых из них.

Проблема в том, чтоСистема запретов работает следующим образом: у всех пользователей есть отдельная кнопка запрета, идентификатор которой совпадает с именем пользователя, затем, если администратор хочет заблокировать пользователя, он нажимает кнопку запрета рядом с именем пользователя, затем запускается событие, иидентификатор кнопки, на которую нажал пользователь (которая, как я уже сказал, равна имени пользователя), отправляется с запросом, и каждый пользователь с таким именем удаляется.

Событие не срабатывает, когда я нажимаюодна из кнопок, сгенерированных кодом позади, но если я настроил кнопку на странице ASPX HTML с точно такими же свойствами, она прекрасно работает.

Это мой код позади:

{
    public DbConnector Dbconnector = new DbConnector();

    public string htmllist = "";

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["user"] == null) Server.Transfer("logincode.aspx");
        if (Session["admin"] == null)
        {
            Server.Transfer("HomePage.aspx");
        }
        else
        {
            DbConnector dbc = new DbConnector();
            SqlDataReader reader = dbc.read("SELECT * FROM UsersTable ORDER BY id");
            while (reader.Read())
            {
                htmllist += $"<tr><td class=\"id\">{reader["Id"].ToString()}</td>";
                htmllist += $"<td>{reader["Username"].ToString()}</td>";
                htmllist += $"<td>{reader["Password"].ToString()}</td>";
                htmllist += $"<td class = \"mail\">{reader["Email"].ToString()}</td>";
                htmllist += $"<td>{reader["IsAdmin"].ToString()}</td>";
                htmllist += $"<td><asp:Button runat=\"server\" name=\"{reader["Username"].ToString()}\" id=\"{reader["Username"].ToString()}\" class=\"btn\" value=\"Remove User\" OnClick=\"BanUser\"/></td></tr>";
                htmllist += "<br />";
            }
            dbc.closeconnection();
        }
    }
    protected void BanUser(object sender, EventArgs e)
    {
        Button button = (Button)sender;
        string buttonid = button.ID;
        string banquery = $"DELETE FROM UsersTable WHERE Username = '{buttonid}';";
        new DbConnector().ExecuteCRUDQuery(banquery);
    }
}

Я пытался это исправить часами, но безрезультатно. Кто-нибудь знает, что я сделал не так?

РЕДАКТИРОВАТЬ

Я хотел бы упомянуть, что я использовал элемент проверки, чтобы убедиться, что идентификаторы кнопок установлены правильно, и они,Это что-то вроде запуска мероприятия, которое не работает.

1 Ответ

0 голосов
/ 24 октября 2019

1- Забанить пользователя не равно удалению этого пользователя из БД, поэтому учтите, что вы можете отменить его в будущем. 2- Вы используете строковый тип данных для идентификатора. Идентификатор всегда числовой. 3. Намного проще запустить ваше мероприятие с помощью Javascript или JQuery. почему ты не используешь их? 4- по вашему запросу вы устанавливаете условие

WHERE Username = '{buttonid}'

вы равняете имя пользователя идентификатору, не должно быть

WHERE Id = '{buttonid}'

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...