Как показать регистры в HTML-таблице без перезагрузки страницы? - PullRequest
0 голосов
/ 04 мая 2019

Я занимаюсь разработкой веб-сайта с использованием asp.net и C # и регистрирую новых пользователей, но когда я пытаюсь добавить много телефонов этому пользователю в таблице, новый регистр не отображается, пока янажмите кнопку регистрации еще раз, но она регистрируется дважды, но показывает только одну, не могли бы вы помочь мне с этим?

Это код из asp.net

Я заряжаю таблицу, используя <asp:Literal ID="tablaTel" runat="server"></asp:Literal>

<div class="panel panel-default letra" id="panelTelefonos">
    <div class="panel-body">
        <div class="container-fluid text-center">
            <!--INICIO TITULO DE PANEL TELEFONOS-->
            <div class="row text-left">
                <label class="control-label" for="txtRegRecNombre">
                    <span class="form-text">TELEFONOS DE CONTACTO:</span>
                </label>
            </div>
            <!--FIN TITULO DE PANEL TELEFONOS-->
            <!--INICIO PRIMERA FILA TELEFONOS-->
            <div class="row">
                <div class="col-sm-3">
                     <label class="control-label" for="DdTelefonos">
                         <span class="form-text">Tipo de Telefono:</span>
                     </label>
                    <asp:DropDownList ID="DdTelefonos" runat="server" class="form-control ns_">
                         <asp:ListItem Selected="True" Value="-99">-- Selecciona --</asp:ListItem>
                         <asp:ListItem Value="1">Celular</asp:ListItem>
                         <asp:ListItem value="2">Casa</asp:ListItem>
                         <asp:ListItem value="3">Oficina</asp:ListItem>
                     </asp:DropDownList>
                </div>
                <div class="col-sm-3">
                     <label class="control-label" for="txtRegRecNumeroTel">
                         <span class="form-text">Numero:</span>
                     </label>
                     <asp:TextBox ID="txtRegRecNumeroTel" runat="server" CssClass="form-control ns_" MaxLength="10" onkeyup="this.value = this.value.toUpperCase();" placeholder="Inserte el Numero de Contacto"></asp:TextBox>
                </div>
                <div class="col-sm-6">
                     <label class="control-label" for="btnRegRecAgregarTel">
                         <br />
                     </label>
                    <br />
                    <asp:Button ID="btnRegRecAgregarTel" runat="server" class="btn btn-primary" Text="Agregar" Style="float:right" OnClick="btnRegRecAgregarTel_Click"/>
                </div>  
            </div>
            <!--FIN PRIMERA FILA TELEFONOS-->
            <br />
            <!--INICIO PANEL DE TABLA TELEFONOS-->
            <div class="row">
                <div class="col-sm-3"></div>
                <div class="col-sm-6">
                    <div class="panel panel-default" id="panelMuestra">
                        <div class="panel-body letra">
                            <!--INICO TABLA DE TELEFONOS-->

                            <div class="table-responsive" >
                            <asp:Literal ID="tablaTel" runat="server"></asp:Literal>
                            </div>
                            <!--FIN TABLA DE TELEFONOS-->
                            <!--INICIO BOTONES DE TABLA TELEFONOS-->
                            <div class="row">
                                <div class="col-sm-12">
                                    <asp:Button ID="Button1" runat="server" class="btn btn-primary" Text="Modificar" Style="float:right"/>
                                    <asp:Button ID="Button2" runat="server" class="btn btn-primary" Text="Eliminar" Style="float:right"/>
                                </div>
                            </div>
                            <!--FIN BOTONES DE TABLA TELEFONOS-->
                        </div>
                    </div>
                </div>
                <div class="col-sm-3"></div>                  
            </div>
            <!--FIN PANEL DE TABLA TELEFONOS-->
        </div>
    </div>
</div>
<!--FIN PANEL TELEFONOS-->

Вот код из C # для вставки в БД новогорегистрация

protected void btnRegRecAgregarTel_Click(object sender, EventArgs e)
{
    int tipoNum = Int32.Parse(DdTelefonos.SelectedValue);
    int num = Int32.Parse(txtRegRecNumeroTel.Text);
    int empresa = Int32.Parse(DdlRegRecEmpresa.SelectedValue);
    int empleado = Int32.Parse(txtRegRecIdEmpleado.Text);
    this.GetData();
    try
    {
        SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog = GMG; Trusted_Connection = true; ");

        con.Open();
        SqlCommand com = new SqlCommand(); 
        com.Connection = con; 
        com.CommandType = CommandType.Text; 
        com.CommandText = "INSERT INTO telefonos(TEL_ID_EMPRESA, TEL_ID_EMPLEADO, TEL_NUMERO_TELEFONO, TEL_TIPO_TELEFONO)" 
            +"VALUES(@TEL_ID_EMPRESA, @TEL_ID_EMPLEADO, @TEL_NUMERO_TELEFONO, @TEL_TIPO_TELEFONO); "; 

        com.Parameters.Add("@TEL_ID_EMPRESA", SqlDbType.Int).Value = empresa;
        com.Parameters.Add("@TEL_ID_EMPLEADO", SqlDbType.Int).Value = empleado;
        com.Parameters.Add("@TEL_NUMERO_TELEFONO", SqlDbType.Int).Value = num;
        com.Parameters.Add("@TEL_TIPO_TELEFONO", SqlDbType.Int).Value = tipoNum;

        com.ExecuteNonQuery();

    }
    catch (MySqlException ex)
    {
        //Mostrar mensaje de que existio un error al crear el nuevo registro

    }
}

Чтобы загрузить таблицу и соединиться с БД, я использую это:

private void TablaTelefonosCarga()
{
    int tam = 1;
    DataTable dt = this.GetData();
    //Building an HTML string.
    StringBuilder html = new StringBuilder();
    //Table start.
    html.Append("<table class='table table-striped table-bordered text-center'>" +
        "<thead>" +
        "<tr class='tituloTabla'>");

    html.Append("<th scope='col' style='text-align:center; vertical-align:middle'>");
    html.Append("#");
    html.Append("</th>");
    html.Append("<th scope='col' style='text-align:center; vertical-align:middle'>");
    html.Append("");
    html.Append("</th>");
    html.Append("<th scope='col' style='text-align:center; vertical-align:middle'>");
    html.Append("Tipo Teléfono");
    html.Append("</th>");
    html.Append("<th scope='col' style='text-align:center; vertical-align:middle'>");
    html.Append("Teléfono");
    html.Append("</th>");

    html.Append("</tr>" +
        "</thead>" +
        "<tbody> ");

    //Building the Data rows.
    foreach (DataRow row in dt.Rows)
    {

        html.Append("<tr>");
        html.Append("<th scope='row' style='text-align:center; vertical-align:middle'>" + tam + "</th>");
        html.Append("<td><input type= 'checkbox' id='"+"checkbox"+tam+"'/></td>");
        foreach (DataColumn column in dt.Columns)
        {
            html.Append("<td>");
            html.Append(row[column.ColumnName]);
            html.Append("</td>");
        }

        html.Append("</tr>");
        tam++;
    }

    //Table end.
    html.Append("</tbody>" +
        "</table>");
    //Append the HTML string to Placeholder.
    tablaTel.Text = html.ToString();
}
private DataTable GetData()
{
    int empresa = Int32.Parse(DdlRegRecEmpresa.SelectedValue);
    string empleado = (txtRegRecIdEmpleado.Text);
    using (SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog = GMG; Trusted_Connection = true; "))
    {
        using (SqlCommand cmd = new SqlCommand("SELECT TEL_TIPO_TELEFONO,TEL_NUMERO_TELEFONO FROM telefonos WHERE TEL_ID_EMPLEADO = @TEL_ID_EMPLEADO"))
        {
            using (SqlDataAdapter sda = new SqlDataAdapter())
            {
                cmd.Parameters.Add("@TEL_ID_EMPLEADO", SqlDbType.VarChar).Value = empleado;
                cmd.Connection = con;
                sda.SelectCommand = cmd;
                using (DataTable dt = new DataTable())
                {
                    sda.Fill(dt);
                    return dt;
                }
            }
        }
    }
}

Я надеюсь, что вы можете мне помочь:)

Ответы [ 2 ]

0 голосов
/ 04 мая 2019

Возможно, вы вызываете TablaTelefonosCarga () в Page_Load или в методе, вызываемом самой Page_Load, это означает, что каждое внесенное вами изменение в таблицу будет видно только после загрузки / перезагрузки страницы.

Когда вы нажимаете любую кнопку с runat = "server" тег asp выполняет этот обработчик события кнопки после Page_Load, (Page_Load -> btnRegRecAgregarTel_Click, в этом порядке). Это означает, что таблица отображается перед добавлением нового регистра в БД.

Чтобы перезагрузить таблицу, каждый раз, когда вы ее изменяете (добавляете, обновляете, удаляете), вы должны вызывать TablaTelefonosCarga () .

В коде, который вы нам показываете, вы должны вызывать TablaTelefonosCarga () один раз btnRegRecAgregarTel_Click правильно выполняется, как указал evilGenius.

0 голосов
/ 04 мая 2019

Итак, после выполнения вызова метода TablaTelefonosCarga ();

com.ExecuteNonQuery();
TablaTelefonosCarga();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...