Javascript 从链接打开窗口(模式或其他),并从代码隐藏中加载数据
所以我有这样的想法:Javascript 从链接打开窗口(模式或其他),并从代码隐藏中加载数据,javascript,c#,jquery,asp.net,webforms,Javascript,C#,Jquery,Asp.net,Webforms,所以我有这样的想法: protected void Page_Load(object sender, EventArgs e) { if (!this.IsPostBack) { DataTable dt = new DataTable(); dt.Columns.AddRange(new DataColumn[8] { new DataColumn
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[8]
{
new DataColumn("Foto",typeof(string)),
//more columns
});
List<Funcion> fun = Festival.Instancia.ListaFunciones;
List<Espectaculo> esp = Festival.Instancia.ListaEspectaculos;
List<Sala> sala = Festival.Instancia.ListaSalas;
foreach (Funcion f in fun)
{
string nom = f.Espectaculo;
string fec = f.Fecha.Day.ToString() + "/" + f.Fecha.Month.ToString();
string hor = f.HoraIni.TimeOfDay.ToString();
string sal = f.Sala;
Espectaculo es = Festival.Instancia.BuscarEspectaculo(nom);
Sala s = Festival.Instancia.BuscarSala(f.Sala);
string com = es.Cnia;
string pais = es.Pais;
string dir = s.DirSala;
string foto = es.Foto;
dt.Rows.Add(foto, nom, fec, hor, sal, dir, com, pais);
}
GridView1.DataSource = dt;
GridView1.DataBind();
}}
…以及显示它的标记。我只需要在gridview上显示其中的一些列,在标记中还有一个链接按钮。我们的想法是打开一个新窗口,或者使用所有这些数据(如详细信息视图)自动生成一个模态。问题是,我不能单独编写每个窗口,因为用户可以添加到上面的列表中,所以这些窗口必须在运行时生成。使用Javascript/jQuery时,到目前为止,我只能显示网格中已经存在的数据,而不能将其隐藏在视图中并显示在模式中。。。我希望能够在服务器端做到这一点
不知道我是否清楚
编辑:
下面是我使用的客户端脚本的标记:
<script type="text/javascript">
$(document).on("click", "[id*=lnkDetalles]", function () {
$("#foto").html($(".Foto", $(this).closest("tr")).html());
$("#espectaculo").html($(".Espectaculo", $(this).closest("tr")).html());
//more columns
$("#detalles").dialog({
title: "Detalles",
buttons: {
Cerrar: function () {
$(this).dialog('close');
}
},
modal: true
});
return false;
});
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<h1 runat="server" id="mensaje"></h1>
<asp:GridView ID="GridView1" HeaderStyle-BackColor="#3AC0F2" HeaderStyle-ForeColor="White"
runat="server" AutoGenerateColumns="false" OnSelectedIndexChanged="GridView1_SelectedIndexChanged">
<Columns>
<asp:BoundField DataField="Foto" HeaderText="Foto" ItemStyle-CssClass="Foto" HeaderStyle-CssClass="Foto"/>
<asp:BoundField DataField="Espectaculo" ItemStyle-CssClass="Espectaculo" HeaderText="Espectaculo" HeaderStyle-CssClass="Espectáculo"/>
//more columns
<asp:TemplateField>
<ItemTemplate>
<asp:LinkButton Text="Detalles" ID="lnkDetalles" runat="server" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
这很好,但我不想在GridView中显示每个字段,并且仍然能够在模式窗口中使用数据,比如隐藏列,但仍能在详细信息视图中显示它。将希望显示在模式中的任何内容放在detalles中
那你有什么问题?它怎么会不像预期的那样工作呢?你肯定在试图用一种方法完成很多事情。。还有这些行中到底发生了什么GridView1.DataSource=dt;GridView1.1数据绑定;您正在绑定与代码格式不符的外观too@DJKRAZEGridView1.DataSource=dt;GridView1.1数据绑定;这是如何从代码隐藏中将DataTable绑定到GridView的。我可以使用jQuery在模态windo中显示数据,但只能显示GridView中已经存在且可见的数据。我希望能够调用datatable上的一些字段来显示它们,而不必在GridView上显示它们。我知道Mason,但看看他是如何做到的。。在foreach循环中。。这才是最重要的。。如果有8个以上的值,我希望绑定位于foreach循环的外侧,那么该如何引用该值而不是原始值呢?另外,如果我这样做,我如何避免在模态窗口上显示它?你说的避免在模态窗口上显示它是什么意思?您确实希望GridView显示在模式窗口中,对吗?很抱歉,我没有将此标记为之前已回答的,我确信我已标记。我想迟做总比不做强。
<div id="detalles" style="display: none">
<span id="foto"></span>
Espectaculo:<span id="espectaculo"></span>
<br />
Fecha:<span id="fecha"></span>
<br />
Hora:<span id="hora"></span>
<br />
Sala:<span id="sala"></span>
<br />
Direccion:<span id="dir"></span>
<br />
Compañía:<span id="cnia"></span>
<br />
Pais:<span id="pais"></span>
<br />
</div>
</asp:Content>
<div id="detalles" style="display: none">
Espectaculo: <asp:Label id="EspectaculoLbl" runat="server" />
</div>
EspectaculoLbl.Text = "Hola, mundo!"; //instead of setting it to hardcoded string, load it from the database