Telerik Radgrid无法使用NestedViewtemplate中的linkbutton下载文件

Telerik Radgrid无法使用NestedViewtemplate中的linkbutton下载文件,telerik,telerik-grid,radgrid,Telerik,Telerik Grid,Radgrid,我正在使用radgrid nestedviewttemplate在行展开中显示产品的详细信息。我的nestedview模板中还有一个链接按钮,单击该按钮可下载文件。我用于下载的代码在radgrid之外工作,但当包含在Nestedviewtemplate中时无法下载。以下是我的代码 <telerik:RadGrid ID="loggedInUserOwnResourcesRadGrid"   AutoGenerateColumns="false"> <MasterTableV

我正在使用radgrid nestedviewttemplate在行展开中显示产品的详细信息。我的nestedview模板中还有一个链接按钮,单击该按钮可下载文件。我用于下载的代码在radgrid之外工作,但当包含在Nestedviewtemplate中时无法下载。以下是我的代码

 <telerik:RadGrid ID="loggedInUserOwnResourcesRadGrid"   AutoGenerateColumns="false">
 <MasterTableView AutoGenerateColumns="false">
 <Columns>
 <telerik:GridTemplateColumn   DataField=" Name">
 <HeaderTemplate><asp:LinkButton ID="LinkButtonForTitleOfGridViewColumn"  
  runat="server" CommandName="Sort" CommandArgument="Name">Resource Name</asp:LinkButton>
 </HeaderTemplate>
 <ItemTemplate>
 <asp:LinkButton ID="LinkButtonOfAParticularName"  runat="server" Text='<%# Eval(" Name")%>'></asp:LinkButton>
  </ItemTemplate>
 </telerik:GridTemplateColumn>
 </Columns>
 <NestedViewSettings >
 <ParentTableRelation>
 <telerik:GridRelationFields DetailKeyField="ID" MasterKeyField="ID"/>
 </ParentTableRelation>
 </NestedViewSettings>
 <NestedViewTemplate>
 <asp:Panel ID="NestedViewPanel"  runat="server">
 <div >
 <fieldset >
 <legend ><b>Detail Info on Resource :   <%#Eval("Name") %></b>
 </legend>

  Download File :

 <asp:LinkButton ID="filenamelinkbutton" Text='<%# Eval("Filename")%>' CommandArgument='<%# 
  Eval("PathToFile")%>'  OnCommand="filenamelinkbutton_Clicked" CommandName="filenamelinkbutton_Clicked"
  runat="server"  ToolTip="Click To Download" ForeColor="Blue"  ></asp:LinkButton>

 </fieldset>
  </div>
 </asp:Panel>
</NestedViewTemplate>
  </MasterTableView>
</telerik:RadGrid>

  protected void filenamelinkbutton_Clicked(object sender, CommandEventArgs e)
    {


        string downloadfilename = e.CommandArgument.ToString();

            try
            {
                FileInfo resourcefilepathusingfileinfo = new FileInfo("~/" + downloadfilename);
                string filename = resourcefilepathusingfileinfo.Name;
                Response.ContentType = "application/download";
                Response.AppendHeader("Content-Disposition", "attachment;filename=" + filename);

                Response.TransmitFile(Server.MapPath("~/" + "ClientBin/" + "Uploads/" + filename));



                HttpContext.Current.ApplicationInstance.CompleteRequest();
             //   Response.End();

            }
            catch (Exception ex)
            { 


            }
        }

资源名称
 
 
 
 
 
 
 
有关资源的详细信息:
 
下载文件:
 
 
已单击受保护的无效文件名链接按钮(对象发送者,CommandEventArgs e)
{
string downloadfilename=e.CommandArgument.ToString();
尝试
{
FileInfo resourcefilepathusingfileinfo=新文件信息(“~/”+下载文件名);
字符串filename=resourcefilepathusingfileinfo.Name;
Response.ContentType=“应用程序/下载”;
Response.AppendHeader(“内容处置”、“附件;文件名=“+filename”);
TransmitFile(Server.MapPath(“~/”+“ClientBin/“+”Uploads/“+文件名));
HttpContext.Current.ApplicationInstance.CompleteRequest();
//Response.End();
}
捕获(例外情况除外)
{ 
}
}

请尝试以下代码片段

  • 如果您的网格使用Telerik Ajax管理器ajaxify
  • JS


    非常感谢你,杰耶什。
        <script type="text/javascript">
            function onRequestStart(sender, args) {
                if (args.get_eventTarget().indexOf("filenamelinkbutton") >= 0) {
                    args.set_enableAjax(false);
                }
            }
        </script>
    
    <telerik:RadAjaxManager ID="RadAjaxManager1" runat="server" ClientEvents-OnRequestStart="onRequestStart">
        <AjaxSettings>
            <telerik:AjaxSetting AjaxControlID="RadGrid1">
                <UpdatedControls>
                    <telerik:AjaxUpdatedControl ControlID="RadGrid1" />
                </UpdatedControls>
            </telerik:AjaxSetting>
        </AjaxSettings>
    </telerik:RadAjaxManager>
    
    <triggers>         
         <asp:PostBackTrigger ControlID="filenamelinkbutton" />
    </triggers>
    
    protected void RadGrid1_ItemDataBound(object sender, GridItemEventArgs e)
    {
        if (e.Item is GridNestedViewItem)
        {
            GridNestedViewItem nestedItem = (GridNestedViewItem)e.Item;
            LinkButton filenamelinkbutton = (LinkButton)nestedItem.FindControl("filenamelinkbutton");
            ScriptManager.GetCurrent(Page).RegisterPostBackControl(filenamelinkbutton);
        }
    
    }