从链接打开窗口(模式或其他方式),并使用代码隐藏中的数据加载它

本文关键字:隐藏 代码 加载 数据 开窗口 链接 模式 方式 其他 | 更新日期: 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