从链接打开窗口(模式或其他方式),并使用代码隐藏中的数据加载它
本文关键字:隐藏 代码 加载 数据 开窗口 链接 模式 方式 其他 | 更新日期: 2023-09-27 18:31:52
所以我有这样的东西:
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();
}}
。以及显示它的标记。我只需要在网格视图上显示其中的几列,其中我在标记中还有一个链接按钮。这个想法是打开一个新窗口,或者打开一个模态(模态会很棒),它是用所有这些数据动态生成的,比如细节视图。问题是,我不能单独编写每个窗口,因为用户可以添加到上面的列表中,因此必须在运行时生成这些窗口。使用 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>
<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>
这工作得很好,但我想不需要在 GridView 中显示每个字段,并且仍然能够在模式窗口中使用数据,例如隐藏列但仍将其显示在详细信息视图中。
将您想要出现在模态中的任何内容放在detalles
中。
<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