asp. net видимость кнопки зависит от значения строки DataTable - PullRequest
0 голосов
/ 21 января 2020

Я хотел бы добавить кнопку в ListView только для некоторых строк. У меня есть что-то вроде «онлайн-чата», и я хочу добавить опцию удаления только для одного пользователя. Это сложно, потому что я хотел бы, чтобы кнопка «удалить» была только в строках, которые являются сообщениями этого пользователя. Сообщения сохраняются в базе данных.

.aspx

  <td><asp:Button ID="Button1" runat="server"  Visible = <%# Eval("BUTTON") %> 

.aspx.cs

  DataColumn newColumn = new DataColumn("BUTTON", typeof(bool));
        dataTable.Columns.Add(newColumn);

        foreach (DataRow row in dataTable.Rows)
        {
            if (row["USER_NAME"].ToString() == "Franek")
                row["BUTTON"] = true;
            else
            {
                row["BUTTON"] = false;
            }
        }

        sqlDataAdapter.Fill(dataTable);
        MessagesView.DataSource = dataTable;
        MessagesView.DataBind();

Сообщение об ошибке (изображение)

Спасибо вам и хорошего дня

1 Ответ

0 голосов
/ 21 января 2020

Попробуйте добавить столбец BUTTON после sqlDataAdapter.Fill(dataTable);.

sqlDataAdapter.Fill(dataTable); будет заполнять Data Table из базы данных, и это может сбрасывать значения столбца «КНОПКА».

        sqlDataAdapter.Fill(dataTable);

        DataColumn newColumn = new DataColumn("BUTTON", typeof(bool));
        dataTable.Columns.Add(newColumn);

        foreach (DataRow row in dataTable.Rows)
        {
            if (row["USER_NAME"].ToString() == "Franek")
                row["BUTTON"] = true;
            else
            {
                row["BUTTON"] = false;
            }
        }

        MessagesView.DataSource = dataTable;
        MessagesView.DataBind();
...