2015-05-12 3 views
0

Я использую listview в панели «Обновление». Когда я пытаюсь удалить его удаление записи из datatable, но listview не обновляется. Bellow мой код кнопки внутри в ListView:После удаления элемента Просмотр списка не обновляется/обновляется

<asp:UpdatePanel ID="UpdatePanel1" UpdateMode="Conditional" runat="server"> 
    <ContentTemplate> 
<asp:ListView ID="lvSelectedVoucher" OnItemCommand="lvSelectedVoucher_OnItemCommand" OnLayoutCreated="lvSelectedVoucher_LayoutCreated" runat="server"> 
      <LayoutTemplate> 
<ItemTemplate> 
       <tr class="odd"> 
        <td class="text-left" colspan="2"> 
        <div id="mvRemoveSelectedId1" class="mv-action" title="Remove item" onclick="removeVoucher">        
          <asp:ImageButton class="ui-icon ui-icon-close" ID="imgDelete" OnClientClick="return confirm('Are you sure you want to delete this Voucher?')" 
            runat="server" CommandArgument='<%# Container.DataItemIndex +1%>' CommandName="Delete" /> 
         </div> 
         <asp:Literal ID="ltlMerchant" Text='<%# Eval("MerchantName") %>' runat="server" ></asp:Literal>       
        </td> 

Мой стороне сервера код ниже:

protected void lvSelectedVoucher_OnItemCommand(object sender, ListViewCommandEventArgs e) 
     { 
      if (e.CommandName == "Delete") 
      { 
       int index = Convert.ToInt32(e.CommandArgument); 

       int listcount = lvSelectedVoucher.Items.Count; 

       if (listcount - 1 == index) 
       { 
        DataTable curTable = (DataTable)ViewState["SelectedVoucher"]; 
        curTable.Rows[index].Delete(); 
        ViewState.Add("SelectedVoucher", curTable); 
        lvSelectedVoucher.DataSource = null; 
        lvSelectedVoucher.DataSource = curTable; 
        lvSelectedVoucher.DataBind(); 
        UpdatePanel1.Update(); 
       } 
     } 
} 

Как я могу обновить мой ListView после удаления одной записи? Заранее спасибо.

+0

могли бы вы добавить больше разметки вашей страницы (UpdatePanel и ListView)? – demonplus

+1

** Hind: (! Page.IsPostBack) ** Убедитесь, что вы установили ** IsPostBack ** проверить PageLoad –

+0

защищаемого недействительным Page_Load (объект отправителя, EventArgs е) { если { VoucherInventoryListView(); } } – Liton

ответ

0

я с помощью моего внутри события ItemDeleting & ListView освежающего правильно

 protected void lvSelectedVoucher_ItemDeleting(object sender, ListViewDeleteEventArgs e) 
     { 
if (e.CommandName == "Delete") 
      { 
       int index = Convert.ToInt32(e.CommandArgument); 

       int listcount = lvSelectedVoucher.Items.Count; 

       if (listcount == index+1) 
       { 
        DataTable curTable = (DataTable)ViewState["SelectedVoucher"]; 
        curTable.Rows[index].Delete(); 
        ViewState.Add("SelectedVoucher", curTable); 
        lvSelectedVoucher.DataSource = null; 
        lvSelectedVoucher.DataSource = curTable; 
        lvSelectedVoucher.DataBind(); 
        UpdatePanel1.Update(); 
       } 
    } 
0

Здесь что-то кажется логически неправильным.

Вы всегда удаляете последний элемент списка ListView? Вы сравниваете индекс элемента должны быть удалены с последним элементом фактически в двух строках:

int listcount = lvSelectedVoucher.Items.Count; 
if (listcount - 1 == index) 

Все остальное кажется хорошо, Так что же, вы пробовали удалить последний элемент зрения списка и посмотреть, если он обновляет?

Смежные вопросы