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
,而不是使用你想从数据表绑定的任何列。太棒了!现在就可以了。非常感谢你。我不能因为没有代表而投票,但我感谢你。