2016-02-23 2 views
2

У меня есть источник данных xml, привязанный к виду сетки. Данные отображаются в виде сетки, но один из столбцов содержит список URL-адресов, к которым я хочу перейти. Я попытался использовать шаблонное поле> шаблон элемента><asp:hyperlink> (I.e navigateurl=<%bind ("links")%>), но это создает ошибку, потому что вместо перехода к URL-адресу в XML-файле он маршрутизируется через локальный хост (местоположение файла xml).Чтение url из xml datasource

Я также попытался связать столбец с помощью метки, но это просто связывает список 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, где я думаю, что возникла ошибка

+0

Не знаете, как выглядит ваш XML, но вот небольшой пример, который должен вам помочь. Http://www.cstruter.com/blog/309 – cstruter

+3

Привет, Добро пожаловать в SO. Ваш вопрос непонятен. Пожалуйста, укажите полный пример кода, который вы написали. Вероятно, стоит посмотреть, хотя [помощь] поможет вам сформулировать лучший вопрос. – Liam

+0

Я обновил OP, чтобы показать, как я реализовал XML-файл данных. – smokeyace

ответ

0

Я создал Gridview и сделал привязку с идентичным XML-файлом. Я изменил пару вещей с помощью вашего средства управления гиперссылкой, и это сработало отлично. Он не добавлял http://localhost перед URL.

Сообщите мне, если это сработало для вас, и если бы это было не так, я покажу вам мой тестовый пример, который сработал.

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

К сожалению, такая же проблема. даже с измененным кодом; если я нажму ссылку, а не перенаправляю меня на www.google.com. Я получаю сообщение об ошибке страницы. Физический путь сопоставляется с моим c: проекту VS и запрошенным URL-адресом: http: // localhost: 6482/http: /www.google.com. Больше идей? – smokeyace

+0

@smokeyace можете ли вы включить разметку сетки? – terbubbs

+0

Я добавил полную разметку gridview – smokeyace

0

Спасибо за помощь, решена проблема; пробелы в файле xml вызвали проблему ... говорят о невозможности увидеть лес для деревьев!