2015-05-12 92 views
0

我在更新面板中使用列表视图。当我尝试从数据表删除它的删除记录,但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(); 
       } 
     } 
} 

我怎么能刷新我的列表视图中删除一条记录后?提前致谢。

+0

请你添加页面(的UpdatePanel和ListView)的多个标记? – demonplus

+1

**后市来看:(!Page.IsPostBack)**请确保您已设置** **的IsPostBack检查页面加载 –

+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) 

一切似乎很好,那你有没有试过删除列表视图中的最后一个项目,看看它是否刷新?

相关问题