设置asp控件的属性并重新加载更改后的页面

本文关键字:加载 控件 asp 属性 新加载 设置 | 更新日期: 2023-09-27 18:18:43

我有一个复杂的问题,但我会尽量用简单的方式解释它。我有一个带有LinkButton的主页。在点击该按钮,它改变DataSourceID属性的ListView在内容页。问题是,在更改属性值后,我使用Response.Redirect("contentpage.aspx");加载页面,但这并没有加载我在属性中所做的更改的页面。

MasterPage。Aspx部分代码

<asp:LinkButton 
                    ID="Link_ClothesMen" 
                    runat="server" 
                    OnClick="Link_ClothesMen_Click">Men</asp:LinkButton>

MasterPage.aspx.cs部分代码

protected void Link_ClothesMen_Click (object sender,EventArgs e)
    {
        ListView ListViewTemp = (ListView)ContentPlaceHolder1.FindControl("ListView1");
        ListViewTemp.DataSourceID = "SqlDataSourceClothesMen";
        Response.Redirect("ContentPage.aspx"); //This is wrong. Help here
    }

ContentPage。Aspx部分代码

<asp:SqlDataSource ID="SqlDataSourceClothesMen" runat="server" 
            ConnectionString="Data Source=DESKTOP-1EGF4SE'SQLEXPRESS;Initial Catalog=clickstream;Integrated Security=True" 
            SelectCommand="select * from [ClothesMen]"></asp:SqlDataSource>
<asp:ListView ID="ListView1" runat="server" DataSourceID="" <!--I'm changing this property-->
             GroupItemCount="3">
            <LayoutTemplate>
                <table style="table-layout:fixed;width:100%">
                    <tr id="groupPlaceholder" runat="server"></tr>
                </table>
            </LayoutTemplate>
            <GroupTemplate>
                <tr>
                    <td id="itemPlaceholder" runat="server">
                    </td>
                </tr>
            </GroupTemplate>
            <ItemTemplate>
                <td align="center">
                    <asp:Image runat="server" ImageUrl='<%# Eval("ImageUrl") %>' Height="20%" Width="70%" /><br />
                    <asp:Label ID="ProductTitleLabel" runat="server" Text='<%# Eval("ProductTitle") %>'></asp:Label><br />
                    <asp:Label ID="PriceLabel" runat="server" Text='<%# Eval("Price") %>'></asp:Label><br />
                </td>
            </ItemTemplate>
            <GroupSeparatorTemplate>
                <tr runat="server">
                    <td colspan="3"><hr /></td>
                </tr>
            </GroupSeparatorTemplate>
        </asp:ListView>

请帮帮我。我希望你对这个问题有一个清楚的了解。

设置asp控件的属性并重新加载更改后的页面

您应该只需要重新绑定列表视图,而不是重定向(并且丢失更改,因为控件状态在响应重定向中不传输)。

ListViewTemp.DataBind();

单击按钮会导致回发到服务器,因此如果这是您试图为视图更新的页面上唯一的元素,则不应该需要完整的重定向。

我明白了。不需要Response.Redirect("ContentPage.aspx");。单击LinkButton本身会刷新页面并进行更改。这是解决。我应该在发布这个问题之前想到这一点。谢谢!