Флажок == правда не обнаружен - PullRequest
2 голосов
/ 30 июня 2011

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

Загрузка страницы

protected void Page_Load(object sender, EventArgs e)
{
    DSTableAdapters.contact_messagesTableAdapter cmta = new DSTableAdapters.contact_messagesTableAdapter();
    DSTableAdapters.messagesTableAdapter mta = new DSTableAdapters.messagesTableAdapter();
    DSTableAdapters.user_messagesTableAdapter umta = new DSTableAdapters.user_messagesTableAdapter();

    DataTable cMessageTable = cmta.GetAll();
    DataTable ownerMessagesTable = umta.GetMessages("owner");
    DataTable clientMessagesTable = umta.GetMessages("user");

    lvContact.DataSource = cMessageTable;
    lvContact.DataBind();

    lvClientMessages.DataSource = clientMessagesTable;
    lvClientMessages.DataBind();

    lvOwnerMessages.DataSource = ownerMessagesTable;
    lvOwnerMessages.DataBind();
}

Разметка:

   <asp:ListView ID="lvContact" runat="server" DataKeyNames="contact_id">
      <LayoutTemplate>
        <table id="itemPlaceHolderContainer">
          <tr>
            <th>Message ID</th>
            <th>Email Address</th>
            <th>Message</th>
            <th>Date</th>
          </tr>
          <tr runat="server" id="itemPlaceHolder"></tr>
        </table>
      </LayoutTemplate>
      <ItemTemplate>
        <tr>
          <td>
            <asp:CheckBox ID="chkContactID" runat="server" AutoPostBack="false" />
          </td>
          <td>
            <asp:Label ID="lblContactEmail" runat="server" Text='<%#Eval("email") %>' />
          </td>
          <td>
            <asp:Label ID="lblContactMessage" runat="server" Text='<%#Eval("message") %>' />
          </td>
          <td>
            <asp:Label ID="lblContactDate" runat="server" Text='<%#Eval("date") %>' />
          </td>
        </tr>
      </ItemTemplate>
    </asp:ListView>
    <asp:Button ID="btnContactDelete" runat="server" 
    Text="Delete Selected Messages" onclick="btnContactDelete_Click" />

Кодсзади:

protected void btnContactDelete_Click(object sender, EventArgs e)
{
    // Loop through each row to find checked boxes
    for (int i = 0; i < lvContact.Items.Count; i++)
    {
        ListViewDataItem items = lvContact.Items[i];
        int iContactID = Convert.ToInt16(lvContact.DataKeys[items.DataItemIndex]["contact_id"]);
        CheckBox chkBox = (CheckBox)items.FindControl("chkContactID");
        if (chkBox.Checked == true)
        {
            Response.Write(iContactID);
            // If selected to be deleted
            DSTableAdapters.contact_messagesTableAdapter cmta = new DSTableAdapters.contact_messagesTableAdapter();
            cmta.DeleteMessage(iContactID);
        }
    }
    lvContact.DataBind();
}

1 Ответ

5 голосов
/ 30 июня 2011

Заполняете ли вы ListView при загрузке страницы, возможно, вам потребуется

if (!IsPostBack)
{
     //Fill ListView
}

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

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