Gridview超链接列希望将xml节点显示为链接

时间:2018-02-22 14:21:16

标签: c# asp.net xml linq hyperlink

我有以下XML文件:

<Employees>
  <Employee>
    <FirstName><a href='profile1.html'>Jon</a></FirstName>
    <Age>22</Age>
  </Employee>
</Employees>

尝试做的是将FirstName显示为指向用户到个人资料页面(网页)的超链接。

用户在文本字段中输入第一个名称并单击搜索按钮后,将通过gridview显示XML文件的结果。但是,第一个名称(搜索结果)当前显示为纯文本。

以下是搜索按钮背后的代码:

XDocument document = XDocument.Load(@"C:\Users\Sammer\source\repos\MisaImports\MisaImports\data\Employee.xml");
        var query = from r in document.Descendants("Employee")
                    where ((string)r.Element("FirstName").Value).Contains(txtSearch.Text) || ((string)r.Element("FirstName").Value).ToLower().Contains(txtSearch.Text)
                    select new
                    {

                        FirstName = r.Element("FirstName").Value,
                        //Age = r.Element("Age").Value
                    };

        GridView1.DataSource = query;
        GridView1.DataBind();

...以下描述了我如何设置gridview:

<asp:GridView ID="GridView1" runat="server" 
                          BorderWidth="1px" 
                          CellPadding="2" 
                          EnableModelValidation="True" 
                          ForeColor="white"
                          GridLines="None" 
                          AutoGenerateColumns="False" 
                          EmptyDataText="No records Found">
                          <Columns>
                               <asp:TemplateField HeaderText="Keyword"  ItemStyle-HorizontalAlign="Center" FooterStyle-HorizontalAlign="Center">
                          <ItemTemplate>
                              <asp:HyperLink ID="link" runat="server" Text='<%# Eval("FirstName") %>' />
                          </ItemTemplate>
                            </asp:TemplateField> 
                          </Columns>
                        </asp:GridView>

我的问题是,如何将第一个名称作为超链接显示?非常感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以像这样获取Url: -

 select new
         {
            FirstName = r.Element("FirstName").Value,
            Profile = x.Element("FirstName")?.Element("a")?.Attribute("href")?.Value ?? ""
         };

最后绑定NavigateUrl属性,如下所示: -

<asp:HyperLink ID="link" runat="server" Text='<%# Eval("FirstName") %>' 
  NavigateUrl='<%# Eval("profile") %>' />