向Ajax Accordion中封装的gridview添加超链接

向Ajax Accordion中封装的gridview添加超链接,ajax,gridview,hyperlink,accordion,Ajax,Gridview,Hyperlink,Accordion,在我的工作中,我需要向gridview添加超链接。现在,我将同一个gridview封装在Ajax手风琴中。不幸的是,它使我添加超链接的方法无效,因为OnRowDataBound方法返回以下错误: “无法将“System.Web.UI.LiteralControl”类型的对象强制转换为System.Web.UI.WebControl.HyperLink类型。” 在线: HyperLink nameHl=(HyperLink)e.Row.Cells[0]。控件[0] 现在我已经试过了: Naviga

在我的工作中,我需要向gridview添加超链接。现在,我将同一个gridview封装在Ajax手风琴中。不幸的是,它使我添加超链接的方法无效,因为OnRowDataBound方法返回以下错误:

“无法将“System.Web.UI.LiteralControl”类型的对象强制转换为System.Web.UI.WebControl.HyperLink类型。”

在线:

HyperLink nameHl=(HyperLink)e.Row.Cells[0]。控件[0]

现在我已经试过了:

NavigateUrl=''

是的,但是使用链接后缀的命名约定,以及我需要如何用“+”替换黑色空格。这对我的项目来说是行不通的。此外,网站链接可能并不总是相同的,所以我宁愿在服务器端而不是客户端定义超链接

任何帮助都将不胜感激。我的代码如下:

客户端:

<asp:Accordion ID="Accordion1" runat="server" FadeTransitions="true" Width="935px" 
 SuppressHeaderPostbacks="true" OnItemDataBound="Accordion1_ItemDataBound" 
 CssClass="acc-content" HeaderCssClass="acc-header" HeaderSelectedCssClass="acc-selected" TransitionDuration="250" FramesPerSecond="40" RequireOpenedPane="False">
 <HeaderTemplate>
        <%#DataBinder.Eval(Container.DataItem,"Rpt_Grouping") %>
 </HeaderTemplate>
 <ContentTemplate>
        <asp:HiddenField ID="hlbl_categoryID" runat="server" Value='<%#DataBinder.Eval(Container.DataItem,"Rpt_Grouping") %>' />
        <asp:GridView ID="accGvReportList" runat="server" RowStyle-BackColor="#ededed" RowStyle-HorizontalAlign="Left" AutoGenerateColumns="false" GridLines="None" CellPadding="2" CellSpacing="2" Width="100%" OnRowDataBound="accGvReportList_RowDataBound">
               <Columns>
                     <asp:TemplateField HeaderStyle-HorizontalAlign="Left" HeaderText="Report Name" HeaderStyle-BackColor="#d1d1d1" HeaderStyle-ForeColor="#777777">
                           <ItemTemplate>
                                   <asp:HyperLink ID="contentLink" runat="server" Text='<%#DataBinder.Eval(Container.DataItem,"Name") %>' />
                           </ItemTemplate>
                     </asp:TemplateField>
                     <asp:TemplateField HeaderStyle-HorizontalAlign="Left" HeaderText="Report Description" HeaderStyle-BackColor="#d1d1d1" HeaderStyle-ForeColor="#777777">
                           <ItemTemplate>
                                   <%#DataBinder.Eval(Container.DataItem, "Description")%>
                           </ItemTemplate>
                     </asp:TemplateField>
               </Columns>
         </asp:GridView>
     </ContentTemplate></asp:Accordion>

我可以通过替换

HyperLink nameHl = (HyperLink)e.Row.Cells[0].Controls[0];

解决方案归于asp.net论坛主题:

HyperLink nameHl = (HyperLink)e.Row.Cells[0].Controls[0];
HyperLink nameHl = ((HyperLink)(e.Row.FindControl("contentLink")));