在Repeater Control中下载链接。 [英] download link in Repeater Control.
本文介绍了在Repeater Control中下载链接。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
previosuly我可以从gridview和GridView1_RowCommand中的代码下载文件
代码是
protected void GridView1_RowCommand( object sender,GridViewCommandEventArgs e)
{
if (e.CommandName == cmd)
{
string filename = e.CommandArgument.ToString();
string path = MapPath( 〜/ Docfiles / + filename);
byte [] bts = System.IO.File.ReadAllBytes(path);
Response.Clear();
Response.ClearHeaders();
Response.AddHeader( Content-Type, Application / octet-stream);
Response.AddHeader( Content-Length,bts.Length.ToString()) ;
Response.AddHeader( Content-Disposition, attachment; filename = +
filename);
Response.BinaryWrite(bts);
Response.Flush();
但现在我创建一个表并显示一些数据,我想要一个下载链接这里的表格是表格代码......
< div class = CSSTableGenerator >
< table border = 0 width = 100% cellpadding = 0 cellspacing = 0
id = results >
< asp:Repeater ID = < span class =code-keyword> Repeater1 runat = server >
< HeaderTemplate >
< tr >
< td >
文件ID
< / td >
< td >
文档名称
< / td >
< td >
文件已上传
< / td >
< td >
文件类型
< / td >
< / tr >
< / HeaderTemplate >
< ItemTemplate >
< tr >
<% - < ; td>< asp:LinkButton ID =LinkButton1runat =server
CommandArgument ='<%#Eval(FileUploaded)%>'
CommandName =cmd>下载< / asp:LinkButton>< / td> - %>
< td > <%#DataBinder.Eval(Container.DataItem, DocumentID)%> < / td >
< td < span class =code-keyword>> <%#DataBinder.Eval(Container.DataItem,
DocumentName)%> < / td >
< td > < span class =code-pagedirective><%#DataBinder.Eval(Container.DataItem,
FileUploaded)%> < / td >
< td > <%#DataBinder.Eval(Container.DataItem,
文档)%> < / TD 跨度> <温泉n class =code-keyword>>
< / tr >
< / ItemTemplate >
< / asp:Repeater >
< div id = pageNavPosition >
< / div >
< / table >
< / div >
现在我如何在表格中添加下载链接以及我写的而不是GridView1_RowCommand ????
任何解决方案?
解决方案
(1)将itemcommand事件添加到转发器
---- -------------------------------------------------
< asp:Repeater ID = Repeater1 OnItemCommand = Repeater1_ItemCommand温泉n> runat = 服务器 >
(2)在重复控制中使用以下模板
----------------------------------------------
< ItemTemplate >
< td >
< asp:LinkButton < span class =code-attribute> ID = LinkButton1 runat = server CommandArgument =' <% #Eval( FileUploaded) %> '
CommandName = 下载 > 下载< / asp:LinkButton >
< / td >
< span class =code-keyword>< / ItemTemplate >
(3)在代码隐藏文件中使用此事件进行转发器控制
----------------------------- ---------------------------------
protected void Repeater1_ItemCommand(object source,RepeaterCommandEventArgs e)
{
if(e.CommandName ==download)
{
string filename = e.CommandArgument.ToString();
string path = MapPath(〜/ Docfiles /+ filename);
byte [] bts = System.IO.File.ReadAllBytes(path);
Response.Clear();
Response.ClearHeaders();
Response.AddHeader(Content-Type,Application / octet-stream);
Response.AddHeader(Content-Length,bts.Length.ToString());
Response.AddHeader(Content-Disposition,attachment; filename =+
filename);
Response.BinaryWrite(bts);
Response.Flush();
}
}
您可以在Repeater的ItemTemplate
并且可以在Repeater_ItemCommand
事件中获得它。
详细解决方案。请查看以下网址。
LinkButton。
希望它会有所帮助。 :)
previosuly i can download files from gridview and code in GridView1_RowCommand
code is
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "cmd")
{
string filename = e.CommandArgument.ToString();
string path = MapPath("~/Docfiles/" + filename);
byte[] bts = System.IO.File.ReadAllBytes(path);
Response.Clear();
Response.ClearHeaders();
Response.AddHeader("Content-Type", "Application/octet-stream");
Response.AddHeader("Content-Length", bts.Length.ToString());
Response.AddHeader("Content-Disposition", "attachment; filename=" +
filename);
Response.BinaryWrite(bts);
Response.Flush();
but now i create a table and show some data and i want a download link in table here is table code...
<div class="CSSTableGenerator" >
<table border="0" width="100%" cellpadding="0" cellspacing="0"
id="results">
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate>
<tr>
<td>
Document ID
</td>
<td >
Document Name
</td>
<td>
File Uploaded
</td>
<td>
Document Type
</td>
</tr>
</HeaderTemplate>
<ItemTemplate>
<tr>
<%--<td><asp:LinkButton ID="LinkButton1" runat="server"
CommandArgument='<%# Eval("FileUploaded") %>'
CommandName="cmd">Download</asp:LinkButton></td>--%>
<td><%#DataBinder.Eval(Container.DataItem,"DocumentID") %></td>
<td><%#DataBinder.Eval(Container.DataItem, "
DocumentName")%> </td>
<td><%#DataBinder.Eval(Container.DataItem,
"FileUploaded")%></td>
<td><%#DataBinder.Eval(Container.DataItem,
"Document")%></td>
</tr>
</ItemTemplate>
</asp:Repeater>
<div id="pageNavPosition" >
</div>
</table>
</div>
now how i add download link in table and what i write instead of GridView1_RowCommand ????
any solution?
解决方案
(1) add itemcommand event to repeater ----------------------------------------------------- <asp:Repeater ID="Repeater1" OnItemCommand="Repeater1_ItemCommand" runat="server"> (2) use following template in repeate control ---------------------------------------------- <ItemTemplate> <td> <asp:LinkButton ID="LinkButton1" runat="server" CommandArgument='<%# Eval("FileUploaded") %>' CommandName="download">Download</asp:LinkButton> </td> </ItemTemplate> (3) use this event for repeater control in codebehind file -------------------------------------------------------------- protected void Repeater1_ItemCommand(object source, RepeaterCommandEventArgs e) { if (e.CommandName == "download") { string filename = e.CommandArgument.ToString(); string path = MapPath("~/Docfiles/" + filename); byte[] bts = System.IO.File.ReadAllBytes(path); Response.Clear(); Response.ClearHeaders(); Response.AddHeader("Content-Type", "Application/octet-stream"); Response.AddHeader("Content-Length", bts.Length.ToString()); Response.AddHeader("Content-Disposition", "attachment; filename=" + filename); Response.BinaryWrite(bts); Response.Flush(); } }
You can add up the link button in Repeater'sItemTemplate
and can get it inRepeater_ItemCommand
event.
for detailed solution .Have a look at following URL.
LinkButton inside Repeater Control.
Hope it will help. :)
这篇关于在Repeater Control中下载链接。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文