从xml数据源

时间:2016-02-23 09:39:52

标签: c# asp.net xml

我有一个绑定到网格视图的xml数据源。数据在网格视图中很好地表示但是其中一列包含我想要导航到的URL列表。我尝试过使用模板字段&gt;项目模板&gt; <asp:hyperlink>(即navigateurl=<%bind ("links")%>)但这会产生错误,因为它不会导航到xml文件中的url,而是通过本地主机(xml文件位置)进行路由。

我还尝试通过标签绑定列,但只是将url列表绑定为纯文本而不是可点击链接。

我想我需要将标签转换为url格式或以某种方式更改超链接数据源的路由。任何帮助将不胜感激。

以下是代码:

 <asp:GridView ID="gv1" runat="server" AutoGenerateColumns="false" AllowSorting="true">
        <Columns>

            <asp:TemplateField HeaderText="ID">
                <ItemTemplate>
                    <asp:Label ID="lblid" runat="server" Text='<%#Bind("id") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>

            <asp:TemplateField HeaderText="Site Name">
                <ItemTemplate>
                    <asp:Label ID="lblSiteName" runat="server" Text='<%#Bind("Name") %>'></asp:Label>
                </ItemTemplate>
            </asp:TemplateField>                       

             <asp:TemplateField HeaderText="Management Link">
                <ItemTemplate>
                    <asp:HyperLink ID="hlManagement" Target="_blank" runat="server" Text="Click" NavigateUrl='<%# Bind("Link", "{0}") %>'></asp:HyperLink>                     
                </ItemTemplate>
            </asp:TemplateField> 

        </Columns>
    </asp:GridView>

以及我如何在后面的代码中进行数据绑定:

DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath("~/XML Docs/Sites.xml"));
gv1.DataSource = ds;
gv1.DataBind();

这是xml片段:

<SiteLink>
    <id> 1 </id>
    <Name> Google </Name>
    <Link> http://www.google.com </Link>
 </SiteLink>

错误是:HTTP错误404.0 - 未找到。路由是:http://localhost:6482/ http:/www.google.com,这是我认为出现错误的地方

2 个答案:

答案 0 :(得分:0)

我创建了一个Gridview并使用相同的xml文件创建了一个数据绑定。我用你的Hyperlink控件改变了一些东西,它运行得很好。它没有在网址前附加http://localhost

请告诉我这是否对您有用,如果没有,我会告诉您我的测试示例有效。

<asp:HyperLink ID="hlManagement" Target="_blank" runat="server" Text="Click"  NavigateUrl='<%# Bind("Link","{0}") %>'></asp:HyperLink> 

答案 1 :(得分:0)

感谢所有帮助,问题解决了; xml文件中的空格引起了问题...谈论无法看到树木的木材!