在ASP.NET中
触发datagrid的OnItemCommen
隐藏代码中得到一个URL
我用Response.Redirect(ReturnURL)
目标不能另存为,单左击可以下载
有什么方法可以既左击,又可以另存为
 页面代码:
<asp:datagrid id="dgrid" runat="server" Width="336px" OnItemCommand="dgrid_DownloadCommand" AutoGenerateColumns="false"Height="208px" DataKeyField="MusicID"><Columns>
<asp:ButtonColumn HeaderText="下载" Text="下载" CommandName="download" />
</Columns>
</asp:datagrid>
隐藏页代码:
  Public Sub dgrid_DownloadCommand(ByVal s As System.Object, ByVal e As DataGridCommandEventArgs) Handles dgrid.ItemCommand
        Dim ReturnURl As String
        If (e.CommandName = "download") Then
            Dim a As String
            a = dgrid.DataKeys(e.Item.ItemIndex)
            ReturnURl = MyMusic.AddClick(a)
           Response.Redirect(ReturnURl)
        End If
    End Sub

解决方案 »

  1.   

    如果下载地址在数据库中
    <asp:ButtonColumn HeaderText="下载" Text="下载" CommandName="download" />
    替换成<A style="COLOR: #ff0000; TEXT-DECORATION: underline" href='<%# DataBinder.Eval(Container.DataItem,"URL")%>'>下载</A>
    dgrid_DownloadCommand事件就不需要了
      

  2.   


    czsxj(好好学习天天向上) 好方法。
      

  3.   

    可是我dgrid_DownloadCommand中有个
    MyMusic.AddClick(a)
    里面调用一个存储过程,是下载次数+1的
    所以才用datagrid啊
      

  4.   

    你直接转到这个下载页面去,肯定是不能"另存为"的.
    你可以这样:在Response.Redirect(ReturnURl)中,先转到一个页面,这个页面非下载,而是显示前一个页面中得到的链接,然后在页面中显示此链接,这样就可以达到目的了.
    Response.Redirect("xxx.aspx?downloadurl=" + ReturnURl)
      

  5.   

    错了
    ReturnURl就是下载的绝对路径
    左击绝对可以下载
      

  6.   

    如果要里面调用一个存储过程的话,再在<A OnClick="事件"></A>