2012-03-21 2 views
1

Я уверен, что это было задано раньше, но я не могу найти подходящий ответ.Добавить гиперссылку на datatable/gridview

Я создаю DataTable динамично и с помощью этого для заполнения веб-управления GridView ...

мне интересно, если или как изменить 1 столбец (URL) быть гиперссылкой?

Мой код для создания DataTable:

private DataTable CreateDataTable() 
{ 
    DataTable myDataTable = new DataTable(); 
    DataColumn myDataColumn; 

    myDataColumn = new DataColumn(); 
    myDataColumn.DataType = Type.GetType("System.String"); 
    myDataColumn.ColumnName = "Title"; 
    myDataTable.Columns.Add(myDataColumn); 

    myDataColumn = new DataColumn(); 
    myDataColumn.DataType = Type.GetType("System.String"); 
    myDataColumn.ColumnName = "URL"; 

    myDataTable.Columns.Add(myDataColumn); 
. 
. 
. 
} 

Я добавляю к DataTable следующим образом:

private void AddDataToTable(string title, string strLink...... 
     { 
      DataRow row = myTable.NewRow(); 
      row["Title"] = title; 
      row["URL"] = strLink; 
      . 
      . 
      . 

затем привязки DataTable к GridView:

datagrid.DataSource = ((DataTable)Session["myDatatable"]).DefaultView; 

datagrid.DataBind(); 
+0

Так что asp.net, не так ли? Я добавил соответствующие теги. – digEmAll

+0

@digemAll, Yeah cheers .. – Standage

+0

Похожие ... http://stackoverflow.com/questions/4109021/link-in-a-datarow-datatable – vapcguy

ответ

1

Вы не сделали бы этого в Datatable - это просто представление данных в памяти. Он не содержит ничего о типах столбцов в виде сетки.

Как только он находится в DataGridView, просто установите тип столбца на DataGridViewLinkColumn.

+0

Извините, что забыл упомянуть, что это веб-элемент управления, а не окна ... – Standage

+0

Ох - попробуйте [this] (http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.hyperlinkfield.aspx) вместо этого. – Bridge

0

когда и связываются с GridView или Детальный вид, U можно добавить гиперссылки управления в столбце URL (шаблон поля) и установите

NavigateUrl='<%# Eval("URL")%>' 

ИЛИ

если и хотите перейти на другой сайт, как Google установите

NavigateUrl='<%# String.Format("http://{0}", Eval("URL")) %>' 

... :)

+0

Я не определил столбцы gridview в asp по мере их изменения, и gridview строится в коде ... – Standage

+0

@Standage Я не совсем уверен, что говорит ур. Исправьте меня, если я ошибаюсь, если вы используете мастер визуальной студии для привязки данных к виду сетки, мастер автоматически создаст связанное поле. однако, вы можете преобразовать эти связанные поля в шаблон, и затем вы можете добавить управление гиперссылкой в ​​это поле шаблона. – Sas

+0

Я не использую мастер визуальной студии для привязки данных к gridview, я создаю datatable с содержимым, как указано выше, в коде, а затем устанавливаю его как источник данных grid view. – Standage

1

Вы можете сделать

row["URL"] = "<a href='www.stackoverflow.com'>Stack Overflow</a>"; 

Но тогда вы должны использовать BoundField на вашем GridView и установить HtmlEncode="false":

<asp:BoundField DataField="URL" HtmlEncode="false" HeaderText="URL" HeaderStyle-Wrap="false" SortExpression="URL"> 
    <ItemStyle Width="25% /> 
</asp:BoundField> 
Смежные вопросы