即使我单击gridview中的任何其他选项或同一页面上的任何其他控件,也会触发Dropdownlist autopostback属性

时间:2017-09-17 17:23:46

标签: asp.net webforms

下拉列表和gridview位于同一页面上。

下拉列表代码: -

    <asp:DropDownList OnSelectedIndexChanged="drplist_SelectedIndexChanged" 
    AutoPostBack="true" ViewStateMode="Disabled" AppendDataBoundItems="true" 
    ID="drplist" runat="server" DataSourceID="datasource1" 
    DataTextField="User_ID" DataValueField="User_ID">
        <asp:ListItem Value="" Text="Make a selection"/>
    </asp:DropDownList>  

gridview代码: -

    <asp:GridView ID="gview" runat="server" Width="100%"  AutoGenerateColumns="false" DataKeyNames="User_ID" DataSourceID="datasource">
        <Columns>
            <asp:BoundField DataField="User_ID" HeaderText="User ID" />
            <asp:BoundField DataField="User_Name" HeaderText="User Name" />
            <asp:BoundField DataField="User_Email" HeaderText="User e-mail" />
            <asp:BoundField DataField="User_Mob" HeaderText="User mobile number" />
            <asp:BoundField DataField="User_Created" HeaderText="Created Date" />
            <asp:CommandField ShowDeleteButton="true" ShowEditButton="true" />
        </Columns>
    </asp:GridView>

下拉列表中包含来自数据库的用户ID,当从下拉列表中进行选择时,它会触发selectedIndexChanged事件,相同的代码: -

    protected void drplist_SelectedIndexChanged(object sender, EventArgs e)
    {
        var index = drplist.SelectedValue;

        drplist.SelectedIndex = 0;
        Response.Redirect("~/Demo/TableDemo.aspx?User_ID="+index);

    }

现在,当我点击浏览器的后退按钮时,下拉列表仍然保留其选定的值我不想要,我希望它重置为索引0.当我返回到从 TableDemo.aspx 页面下拉列表,然后点击gridview中的编辑按钮或删除按钮,再次触发下拉列表的回发,将我带到 TableDemo.aspx 页面。只有手动页面刷新可以直接设置。我尝试搜索并实现JS代码,以便在按下浏览器后退按钮时强制页面刷新,但它没有解决我的问题并创建了更多。我尝试使用更新面板让我感到沮丧,而且碰巧在这里没有解决我的问题。对于这篇长篇文章感到抱歉,我在写这篇文章时做得不够好。

1 个答案:

答案 0 :(得分:0)

您的页面可能已缓存,这就是您单击后退按钮时不会按照您希望的方式运行的原因。尝试将此代码添加到您不希望被篡改的页面上的page_load。

Response.Cache.SetCacheability(HttpCacheability.NoCache);

希望这有帮助!