UpdatePanel中的ListView没有得到反弹

本文关键字:中的 ListView UpdatePanel | 更新日期: 2023-09-27 18:03:41

我有一个ASP。. NET ListView中的UpdatePanel。

在ItemTemplate中有2个带有命令"UpdateCart"&"RemoveCart"。在这两个命令中,ListView的数据源(一个SQL数据源)得到反弹。

SqlDataSource上没有InsertCommand/UpdateCommand/DeleteCommand

我的问题是:无论何时单击这些按钮,都不会刷新数据源。但是,我可以从调试模式中看到,值确实正确地传递给数据源选择方法。

相关ASPX Page:

<asp:ScriptManager ID="ScriptManager1" runat="server">
    </asp:ScriptManager>
    <asp:UpdateProgress ID="UpdateProgress1" DisplayAfter="10" runat="server" AssociatedUpdatePanelID="UpnlMain">
        <ProgressTemplate>
            <div class="divWaiting">
                <asp:Label ID="lblWait" runat="server" Text=" Please wait... " />
                <asp:Image ID="imgWait" runat="server" ImageAlign="Middle" ImageUrl="~/Image/AjaxLoading.gif" />
            </div>
        </ProgressTemplate>
    </asp:UpdateProgress>
    <asp:UpdatePanel ID="UpnlMain" runat="server">
        <ContentTemplate>

<asp:ListView ID="lvMain" runat="server" DataSourceID="sdsMain" DataKeyNames="Code"
                OnItemCommand="lvMain_ItemCommand">
                <EmptyDataTemplate>
                    <div class="col-xs-12">
                        <span>No Items in Cart.</span>
                    </div>
                </EmptyDataTemplate>
                <ItemTemplate>
<asp:Label ID="lblCode" runat="server" Text='<%# Eval("Code") %>' Visible="false" />
Product " <asp:Literal ID="ltrStyleNo" runat="server" Text='<%# Eval("StyleNo") %>' />
Qty : <asp:TextBox ID="txtQty" runat="server" type="number" CssClass="txtQty OnlyNumeric form-control  text-center input-sm"
                                    Text='<%# Eval("Qty") %>'></asp:TextBox>
<asp:ImageButton ID="btnUpdate" runat="server" ImageUrl="~/image/update.png" CssClass="btn btnUpdateCart"
                                    CommandName="UpdateCart" AlternateText="Update Qty" />
<asp:ImageButton ID="btnDelete" runat="server" ImageUrl="~/image/delet.png" CssClass="btn"
                                    CommandName="DeleteCart" AlternateText="Remove Item" />

</ItemTemplate>
                <LayoutTemplate>
                    <asp:PlaceHolder ID="itemPlaceholder" runat="server"></asp:PlaceHolder>
                </LayoutTemplate>
            </asp:ListView>
            <asp:SqlDataSource ID="sdsMain" runat="server" ConnectionString="<%$ ConnectionStrings:CurrentConnectionString %>"
                SelectCommand="pGetItemsForCart" SelectCommandType="StoredProcedure" OnSelecting="sdsMain_Selecting" 
                UpdateCommand="NoUpdate" UpdateCommandType="StoredProcedure">
                <UpdateParameters>
                <asp:Parameter DefaultValue="-1" Name="WoSCodeCSV" Type="String" />
                </UpdateParameters>
                <SelectParameters>
                    <asp:Parameter DefaultValue="-1" Name="WoSCodeCSV" Type="String" />
                </SelectParameters>
            </asp:SqlDataSource>

代码:

        protected void sdsMain_Selecting(object sender, SqlDataSourceSelectingEventArgs e)
        {
            e.Command.Parameters[0].Value = GetCartCodes(); //gives some values in csv from Session .. 
        }

 protected void lvMain_ItemCommand(object sender, ListViewCommandEventArgs e)
        {
            if (e.CommandName.ToLower() == "UpdateCart".ToLower())
            {
                Label lblCode = e.Item.FindControl("lblCode") as Label;                
                TextBox txtQty = e.Item.FindControl("txtQty") as TextBox;
                //Some update in a Session              
                BindListView();
            }
            else if (e.CommandName.ToLower() == "DeleteCart".ToLower())
            {
                Label lblCode = e.Item.FindControl("lblCode") as Label;                
                //Some update in a Session              
                BindListView();
            }
            else if (e.CommandName.ToLower() == "RefreshCart".ToLower())
            {
                Label lblCode = e.Item.FindControl("lblCode") as Label;
                BL.StyleSearchHelper.PriceItem(Page, lblCode.Text);
                BindListView();
            }
        }
        void BindListView()
        {
            sdsMain.DataBind();
            lvMain.DataBind();            
        }

UpdatePanel中的ListView没有得到反弹

尝试替换更新面板外的按钮。当按钮在updatepanel中时,页面将不会刷新。对不起,我不能发表评论,所以我在这里发布作为一个答案。