我在更新面板中使用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();
}
}