我正在开发一个GridView中,你可以下载一个按钮多个文件。
这里是我的GridView:
<asp:GridView ID="grdvHistorialMensajes" runat="server" AllowPaging="True"
AutoGenerateColumns="False" CellPadding="4" AllowSorting="true"
EmptyDataText="No Hay Mensajes Enviados" ForeColor="#333333"
GridLines="None" CellSpacing="1"
onpageindexchanging="grdvHistorialMensajes_PageIndexChanging"
onrowcommand="grdvHistorialMensajes_RowCommand"
onsorting="grdvHistorialMensajes_Sorting">
<AlternatingRowStyle BackColor="White" ForeColor="#284775" />
<Columns>
<asp:BoundField DataField="CorreoCliente" HeaderText="Correo Del Cliente" SortExpression="CorreoCliente" />
<asp:BoundField DataField="CorreosAdicionales" HeaderText="Correos Adicionales" SortExpression="CorreosAdicionales" />
<asp:BoundField DataField="Tema" HeaderText="Tema" SortExpression="Tema" />
<asp:BoundField DataField="Mensaje" HeaderText="Mensaje" SortExpression="Mensaje" />
<asp:TemplateField HeaderText="Fecha" SortExpression="Fecha">
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem, "Fecha", "{0:dd/MM/yyyy}")%>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="tbxFecha" runat="server" Text='<%#Bind("Fecha","{0:dd/MM/yyyy}") %>' ValidationGroup="gpEdicionAgenda">
</asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Hora" HeaderText="Hora" SortExpression="Hora" />
<asp:BoundField DataField="Archivos" HeaderText="Archivos" SortExpression="Archivos" />
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgBtnDescargarArchivos" runat="server"
CommandArgument='<%# Eval("IdMensaje")%>' CommandName="Descargar" Height="16px"
ImageUrl="~/img/activar.png" ToolTip="Descargar" Width="16px" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:ImageButton ID="imgBtnVerMas" runat="server"
CommandArgument='<%# Eval("IdMensaje")%>' CommandName="VerMas" Height="16px"
ImageUrl="~/img/search.png" ToolTip="Ver Mas" Width="16px" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
<EditRowStyle BackColor="#999999" />
<FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
<PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
<RowStyle BackColor="#F7F6F3" ForeColor="#333333" HorizontalAlign="Center" />
<SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
<SortedAscendingCellStyle BackColor="#E9E7E2" />
<SortedAscendingHeaderStyle BackColor="#506C8C" />
<SortedDescendingCellStyle BackColor="#FFFDF8" />
<SortedDescendingHeaderStyle BackColor="#6F8DAE" />
</asp:GridView>
每当我点击“Descargar” RowCommand,我最初使用这样的:
if (e.CommandName == "Descargar")
{
DataTable dt = ConexionBD.GetInstanciaConexionBD().GetArchivosPorMensaje(Convert.ToInt32(e.CommandArgument));
foreach (DataRow dr in dt.Rows)
{
string strArchivo = dr["Nombre"].ToString();
string strExtension = Path.GetExtension(strArchivo).ToLower();
Response.Write("<script>window.open('/Archivos/" + strArchivo + "');</script>");
}
}
当我点击,如果该行不得不让我们说1个PDF,JPG 1和1个文档,它在不同的窗口中打开PDF和JPG格式都和文档将被下载。 这正是我想要的。 然而,我注意到,每当一个新的页面被打开(在PDF和JPG的情况下)页面中所有的字体被改变。 所以,我想找到一个解决方案,然后我尝试这样做:
if (e.CommandName == "Descargar")
{
DataTable dt = ConexionBD.GetInstanciaConexionBD().GetArchivosPorMensaje(Convert.ToInt32(e.CommandArgument));
foreach (DataRow dr in dt.Rows)
{
string strArchivo = dr["Nombre"].ToString();
string strExtension = Path.GetExtension(strArchivo).ToLower();
ClientScript.RegisterStartupScript(this.GetType(), "myFileOpenScript", "<script>window.open('/Archivos/" + strArchivo + "');</script>");
}
}
当我打开PDF文件,字体没有改变这个时候,然而,它只会开/下载时出现INT dt.Rows [0](dt.Rows [1]不会打开)的第一个文件。 我想,一个回复于可多次部署,然而,ClientScript.RegisterStartupScript大概只能执行一次。
有没有我可以使用不改变页面的文字字体,并打开一个单一的点击多个文件的另一种方法?
或者我怎么能执行ClientScript.RegisterStartupScript多次?
提前致谢