向Ajax Accordion中封装的gridview添加超链接
在我的工作中,我需要向gridview添加超链接。现在,我将同一个gridview封装在Ajax手风琴中。不幸的是,它使我添加超链接的方法无效,因为OnRowDataBound方法返回以下错误: “无法将“System.Web.UI.LiteralControl”类型的对象强制转换为System.Web.UI.WebControl.HyperLink类型。” 在线:向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
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")));