首页 > 解决方案 > 如何在 C# ASP.NET 中将值从 Repeater 传递到 Modal,然后再传递到 CodeBehind?

问题描述

这是我的中继器,我使用 ID="lknReject" 的 LinkBut​​ton 打开一个模式,我想在 Eval("IdReq") 中发送值

<asp:Repeater ID="rptListaRequisicoes" runat="server" OnItemDataBound="rptListaRequisicoes_ItemDataBound">
            <HeaderTemplate>
                <table id="tblAdmin" class="table table-bordered table-hover">
                    <thead>
                        <tr>
                            <th></th>
                            <th>ID</th>
                            <th>Nome</th>
                            <th>Logistica</th>
                            <th>Estado</th>
                            <th>Data Criação</th>
                            <th>Data Alteração</th>
                            <th></th>
                            <th></th>
                            <th></th>
                        </tr>
                    </thead>
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td>
                        <asp:Label ID="lblIdColaborador" runat="server" Text='<%# Eval("IdColaborador") %>' Style="display: none;" />
                    </td>
                    <td>
                        <asp:Label Font-Bold="true" ID="lblIdReq" runat="server" Text='<%# Eval("IdReq") %>' />
                    </td>
                    <td>
                        <asp:LinkButton Font-Bold="true" runat="server" ID="lkbtnDetalhes" Text='<%# Eval("Nome") %>' OnClick="lkbtnDetalhes_Click" />
                    </td>
                    <td>
                        <asp:Label Font-Bold="true" ID="lblInfoLog" runat="server" Text='<%# Eval("InfoLog") %>' />
                    </td>
                    <td>
                        <asp:Label Font-Bold="true" ID="lblEstado" runat="server" Text='<%# Eval("Status") %>' />
                    </td>
                    <td>
                        <asp:Label Font-Bold="true" ID="lblDataCriacao" runat="server" Text='<%# Eval("DataCriacao") %>' />
                    </td>
                    <td>
                        <asp:Label Font-Bold="true" ID="lblDataAlteracao" runat="server" Text='<%# Eval("DataAlteracao") %>' />
                    </td>
                    <td>
                        <asp:LinkButton ID="lknAprove" Font-Bold="true" runat="server" ID="OnAprovar" Text="Validar" OnClientClick='<%# Eval("Nome","Javascript:return confirm(\"Deseja aprovar a requisição: {0}\");") %>' OnClick="OnAprovar_clik" />
                    </td>
                    <td>
                        <asp:LinkButton ID="lknReject"Font-Bold="true" CssClass="txtBox" runat="server" ID="OnRecusar" Text="Rejeitar" data-toggle="modal" data-target="#modalReject" data-whatever='<%# Eval("IdReq") %>' OnClientClick="javascript:return false;" />
                    </td>
                    <td>
                        <asp:LinkButton ID="lknEditar" Font-Bold="true" runat="server" Text="Editar" OnClick="lknEditar_Click" />
                    </td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table>
            </FooterTemplate>
        </asp:Repeater>

这是我的引导模式

<div class="modal fade" id="modalReject" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title text-center" id="exampleModalLabel" style="font-weight: bold; color: #142658;">Rejeitar Requisição</h4>
                </div>
                <div class="modal-body">
                    <div class="form-group">
                        <asp:Label runat="server" ID="lblMtvRej" Text="Motivo da Rejeição: " ForeColor="#142658" Font-Bold="true" />
                        <asp:TextBox runat="server" ID="txtMtvRej" CssClass="form-control" />
                    </div>
                    <div class="form-group">
                        <asp:Label runat="server" ID="lblMtvRejDesc" Text="Descrição: " ForeColor="#142658" Font-Bold="true" />
                        <asp:TextBox runat="server" ID="txtMtvRejDesc" TextMode="MultiLine" CssClass="form-control" Style="resize: none;" />
                    </div>
                </div>
                <div class="modal-footer">
                    <asp:Button runat="server" class="btn btn-default" data-dismiss="modal" Text="Cancelar" />
                    <asp:Button runat="server" ID="btnSendRejectMessage" CssClass="btn btn-primary" Text="Enviar Mensagem" BackColor="#de0426" OnClick="btnSendRejectMessage_Click" />
                </div>
            </div>
        </div>
    </div>

这是 Modal Send Message 按钮的 CodeBehind 功能,我无法在其上获取转发器 arg,因此我不知道该怎么做,并且我想避免使用 HiddenField 是可能的。

 protected void btnSendRejectMessage_Click(object sender, EventArgs e)
    {
        try
        {
            RepeaterItem item = (sender as LinkButton).Parent as RepeaterItem;
            int IdReq = Convert.ToInt32((item.FindControl("lblIdReq") as System.Web.UI.WebControls.Label).Text);

            string constr = ConfigurationManager.ConnectionStrings["FolhaRegisto_ConnectionString"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
            {
                using (SqlCommand cmd = new SqlCommand("spRequisicao"))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@Action", "UPDATESTATUS");
                    cmd.Parameters.AddWithValue("@IdReq", IdReq);
                    cmd.Parameters.AddWithValue("@IdStatus", 5);

                    cmd.Connection = con;
                    con.Open();
                    cmd.ExecuteNonQuery();
                    con.Close();
                }
            }

            ScriptManager.RegisterStartupScript(this, this.GetType(), "key_name", "SucessoNote('Utilizador rejeitado.');", true);

        }
        catch (Exception er)
        {
            ScriptManager.RegisterStartupScript(this, this.GetType(), "key_name", "ErrorNote('Falha ao rejeitado utilizador');", true);
        }
    }

标签: javascriptc#html.net

解决方案


推荐阅读