C# 从DataTable向GridView添加超链接列

C# 从DataTable向GridView添加超链接列,c#,asp.net,.net,gridview,datatable,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; Da

我明白了:

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;                


        }

    }

}
public分部类VerAgenda:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
列表乐趣=Festival.Instancia.listafaunsones;
DataTable dt=新的DataTable();
if(fun.Count()==0)
mensaje.InnerText=“没有可争议的功能”;
添加(新的数据列(“spectaculo”,typeof(string));
Add(新数据列(“Fecha”,typeof(string));
Add(新数据列(“Hora”,typeof(string));
Add(新数据列(“Sala”,typeof(string));
Add(新的数据列(“Detalles”,typeof(string));
foreach(fun中的函数f)
{
字符串pais=“”;
而(pais==“”)
{
列表esp=Festival.Instancia.ListaEspectaculos;
int-es=0;
而(es
}

对于此标记:

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

想不到,我知道。我需要知道如何向每一行添加URL,并根据列表中的详细信息对其进行格式化(例如:“/xxx.aspx?function”+fun.IndexOf[f]+“.aspx”或类似的内容。我认为这可能是一个超链接列或类似的内容,但我似乎无法让它正常工作

其想法是填充GridView服务器端…现在它可以很好地处理字符串

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


提前感谢。

您需要将列添加到
GridView
中,并使用以下内容:-

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

酷,谢谢…但是我如何从变量中获取DataNavigateUrlFormatString?这不是从DB,只是一个datatable…我的意思是,从C代码中获取?@dumber_than_-请检查我的更新。好吧…我得到了一个链接。但我仍然不知道如何将变量传递到字段…我是说,NavigateUrl部分,现在无法工作…@du不,不要包括那些属性,我以为你是直接绑定的,只在HyperLinkField中添加
NavigateUrl
属性,我在那里使用了
Id
,而不是使用你想从数据表绑定的任何列。太棒了!现在就可以了。非常感谢你。我不能因为没有代表而投票,但我感谢你。