在Repeater Control中下载链接。 [英] download link in Repeater Control.

查看:67
本文介绍了在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:LinkBut​​ton ID =LinkBut​​ton1runat =server
CommandArgument ='<%#Eval(FileUploaded)%>'
CommandName =cmd>下载< / asp:LinkBut​​ton>< / 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 runat = 服务器 >

(2)在重复控制中使用以下模板
----------------------------------------------
< ItemTemplate >
< td >
< asp:LinkBut​​ton < span class =code-attribute> ID
= LinkBut​​ton1 runat = server CommandArgument =' <% #Eval( FileUploaded%> '

CommandName = 下载 > 下载< / asp:LinkBut​​ton >
< / 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 事件中获得它。





详细解决方案。请查看以下网址。



LinkBut​​ton。



希望它会有所帮助。 :)

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's ItemTemplate and can get it in Repeater_ItemCommand event.


for detailed solution .Have a look at following URL.

LinkButton inside Repeater Control.

Hope it will help. :)


这篇关于在Repeater Control中下载链接。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆