【问题标题】:Adding a HyperLink column to a GridView from a DataTable从 DataTable 将 HyperLink 列添加到 GridView
【发布时间】:2014-11-25 05:00:32
【问题描述】:

我知道了:

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 服务器端...它现在对字符串工作正常。

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

提前致谢。

【问题讨论】:

    标签: c# asp.net .net gridview datatable


    【解决方案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();
    

    【讨论】:

    • 酷,谢谢...但是如何让 DataNavigateUrlFormatString 从变量中获取?这不是来自数据库,只是一个数据表......我的意思是,来自 C# 代码?
    • @dumber_than_thou - 请检查我的更新。
    • 好的...所以我得到了一个链接。但我仍然不知道如何将变量传递给字段......我的意思是,NavigateUrl 部分现在无法让它工作......
    • @dumber_than_thou - 不,不要包含那些属性,我以为你是直接绑定的,只在 HyperLinkField 中放置 NavigateUrl 属性,我使用 Id 代替使用任何你想要的列从您的 DataTable 绑定。
    • 太棒了!现在明白了。非常感谢。不能因为缺乏代表而投票,但我要谢谢你。
    猜你喜欢
    • 1970-01-01
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    相关资源
    最近更新 更多