无论如何,Post_Back都会触发OnSelectedIndexChanged

时间:2014-01-14 13:48:47

标签: c# asp.net gridview drop-down-menu

编辑:我通过创建一个新的ashx页面来解决这个问题,该页面包含下载pdf的代码。然后我在其中打开一个触发下载的新窗口。


我在gridview中有一个下拉列表。该列表具有硬编码值,并在更改索引时触发ChangeSelection()。

<asp:GridView ID="GridViewSkilagreinar" runat="server" AutoGenerateColumns="False" AllowPaging="False"> 
     <Columns>
        <asp:TemplateField ShowHeader="true" HeaderText="foo">
        <ItemTemplate>
        <asp:DropDownList ID="DropDownListAdgerd" runat="server" EnableViewState="false" AutoPostBack="true" Width="100px" OnSelectedIndexChanged="ChangeSelection">
          <asp:ListItem Value="1">1</asp:ListItem>
          <asp:ListItem Value="2">2</asp:ListItem>
          <asp:ListItem Value="3">3</asp:ListItem>
        </asp:DropDownList>
        </ItemTemplate>
        </asp:TemplateField>
     </Columns>
</asp:GridView>

在同一页面上,我还有一个按钮和几个LinkBut​​tons。当我更改页面上下拉列表中的选项时,如果我选择&#34; 2&#34;从它我可以捕捉它,并在ChangeSelection函数内做我想要的。在这种情况下,我正在触发PDF下载。

但是,如果我现在按下页面上的按钮或LinkBut​​tons,它们会一次又一次地触发OnSelectedIndexChanged函数,这是我不想要的。该按钮具有OnClick属性,该属性调用Button_Click函数,但它永远不会被调用如果我之前已经更改了下拉列表索引。

导致此问题的原因是什么?我试过制作选定的值&#34; 1&#34;在ChangeSelection函数中,在我完成处理&#34; 2&#34;选择,希望重置下拉列表,但它永远不会发生。

我觉得我需要以某种方式重置下拉列表,但我不确定如何去做。

编辑:当我选择&#34; 2&#34;从下拉列表中我调用一个函数,使用以下代码启动PDF下载:

    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.AddHeader("content-disposition", "attachment; filename=" + name_of_file);
    HttpContext.Current.Response.AddHeader("Content-Type", "application/pdf");
    HttpContext.Current.Response.BinaryWrite(bytes_to_be_downloaded);
    HttpContext.Current.Response.End();

如果我删除了对此功能的调用,一切正常,但我没有得到我的PDF文件。我现在可以按下按钮和LinkBut​​tons,他们按预期执行,即使&#34; 2&#34;仍然被选中。我错过了HttpContext调用中的内容吗?

0 个答案:

没有答案