删除项目列表后,视图不更新/刷新



我在更新面板中使用ListView。当我尝试从DataTable删除其删除记录时,但ListView不更新。在ListView中的内部bellow我的按钮代码:

    <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?提前致谢。

这里的某些东西在逻辑上似乎不正确。

您是否总是删除ListView的最后一项?您正在比较要删除的项目索引与两行实际上的最后一项:

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

其他一切看起来都很好,所以,您是否尝试过删除列表视图的最后一项,看看它是否刷新?

我使用了我的内部itemDeleting事件&amp;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();
                }
    }

最新更新