2014-11-25 3 views
0

Я получил это:Добавление столбца HyperLink к GridView из DataTable

public partial class VerAgenda : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 



     if (!IsPostBack) 
     { 


      List<Funcion> fun = Festival.Instancia.ListaFunciones; 
      DataTable dt = new DataTable(); 



      if (fun.Count() == 0) 
       mensaje.InnerText = "No hay funciones disponibles"; 

      dt.Columns.Add(new DataColumn("Espectaculo", typeof(string))); 
      dt.Columns.Add(new DataColumn("Fecha", typeof(string))); 
      dt.Columns.Add(new DataColumn("Hora", typeof(string))); 
      dt.Columns.Add(new DataColumn("Sala", typeof(string))); 
      dt.Columns.Add(new DataColumn("Detalles", typeof(string))); 

      foreach (Funcion f in fun) 
      { 
       string pais = ""; 
       while (pais == "") 
       { 
        List<Espectaculo> esp = Festival.Instancia.ListaEspectaculos; 
        int es = 0; 
        while (es < esp.Count() && pais == "") 
        { 
         if (esp[es].Nombre == f.Espectaculo) 
          pais = esp[es].Pais; 
         es++; 
        } 
       } 
       string link = "test"; 
       dt.Rows.Add(f.Espectaculo, f.Fecha, f.HoraIni, pais, link); 
       tblAgenda.DataSource = dt; 
       tblAgenda.DataBind(); 
       this.tblAgenda.Visible = true;     


     } 

    } 

} 

}

Для этой разметки:

<asp:GridView ID="tblAgenda" runat="server"> 
    </asp:GridView> 

Fancy, я знаю. Мне нужно знать, как добавить URL-адрес в каждую строку, форматируя его из деталей в списке (например: «/xxx.aspx?funcion» + fun.IndexOf [f] + «.aspx» или что-то в этом роде. что бы HyperLinkColumn или что-то, но я не могу заставить его работать.

идея заключается в том, чтобы заполнить GridView на стороне сервера ... это сейчас отлично работает для строк.

Я понимаю, что это самый новичок вопрос, но я бы очень признателен за помощь ...

Спасибо заранее.

ответ

1

Вы должны добавить столбцы в GridView и нас е HyperLinkField что-то вроде этого: -

<asp:GridView ID="tblAgenda" runat="server" AutoGenerateColumns="false"> 
    <Columns> 
     <asp:BoundField HeaderText="Name" DataField = "Name" /> 
     <asp:HyperLinkField DataTextField="Name" DataNavigateUrlFields="Id" DataNavigateUrlFormatString="~/xyz.aspx?Id={0}" HeaderText="Name"/> 
     ----Other columns 
    </Columns> 
</asp:GridView> 

Edit:

Bind его с помощью DataTable что-то вроде этого: -

DataTable dt = new DataTable(); 
dt.Columns.AddRange(new DataColumn[3] { new DataColumn("Id"), new DataColumn("Name") }); 
dt.Rows.Add(1, "Pam); 
dt.Rows.Add(2, "Richard"); 
dt.Rows.Add(3, "Mary"); 
tblAgenda.DataSource = dt; 
tblAgenda.DataBind(); 
+0

Круто, спасибо ... но как я могу получить DataNavigateUrlFormatString взять из переменной? Это не из БД, а только для данных ... Я имею в виду, из кода C#? –

+0

@dumber_than_thou - Пожалуйста, уточните мое обновление. –

+0

Хорошо ... так что я получил ссылку. Но я до сих пор не понимаю, как передать переменную в поле ... Я имею в виду, что часть NavigateUrl не может заставить это работать сейчас ... –

Смежные вопросы