从DataTable向GridView添加HyperLink列

时间:2014-11-25 05:00:32

标签: c# asp.net .net 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>

很奇怪,我知道。我需要知道如何为每行添加一个URL,从列表中的详细信息格式化它(即:“/xxx.aspx?funcion”+ fun.IndexOf [f] +“。aspx”或类似的东西。我认为这将是一个HyperLinkColumn或其他东西,但我似乎无法使它工作。

这个想法是填充GridView服务器端...它现在适用于字符串。

我意识到这是一个最新手的问题,但我真的很感激一些帮助...

提前致谢。

1 个答案:

答案 0 :(得分: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>

修改

使用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();