Я добавляю и удаляю строку динамически, используя jQuery, теперь я хочу, чтобы введенные значения сохранялись в БД с использованием ASP.NET.

0

Ниже приведен код jQuery, который помогает мне динамически добавлять и удалять строку, но теперь я хочу добавить данные, введенные в эти динамические строки, в БД и, в частности, с помощью ASP.NET. Я не понимаю и не очень-то новичок в ASP.NET. И есть 2 поля, которые принимают дату. Помогите мне!

$(document).ready(function () {

        var lastChar = 1, newRow;
        get_lastID = function () {
            var id = $('#experience_table tr:last-child td:first-child input').attr("name");
            lastChar = parseInt(id.substr(id.length - 2), 10);
            lastChar = lastChar + 1;
            newRow = "<tr> \
        <td><input type='text'  name='company_name_0" + lastChar + "' maxlength='255' /></td> \
        <td><input type='text' class='datePicker' name='from_0" + lastChar + "'  /></td> \
        <td><input type='text'  class='datePicker' name='to_0" + lastChar + "'  /></td> \
        <td><input type='number' name='Total_exp_0" + lastChar + "' maxlength='11' /></td> \
                <td><input type='button' value='Delete' class = 'del_ExperienceRow' /></td> \
            </tr>"

        }
        $("#add_ExperienceRow").on("click", function () {

            if ($('#experience_table tr').size() <= 9) {
                get_lastID();
                $('#experience_table tbody').append(newRow);
            } else {
                alert("Reached Maximum Rows!");
            };
            $('.datePicker').datepicker();

        });
            $('.datePicker').datepicker();
        $(document).on('click', '.del_ExperienceRow', function () {

            $(this).closest('tr').remove();
            lastChar = lastChar - 2;
        });


        });

    });
  • 0
    Вы можете забрать данные с помощью запроса ["ключ"] после POSTing. Однако вы должны увеличить число на <input>, чтобы разделить их.
  • 0
    Исходя из моего опыта работы с jQuery и asp.net, вы должны будете использовать элементы управления asp внутри jQuery, чтобы иметь возможность вызывать его на стороне сервера.
Показать ещё 1 комментарий
Теги:
database

2 ответа

0

Вы должны создать кнопку сохранения, которая сохранит все ваши строки и введенные данные в массиве и отправит данные на сервер следующим образом:

function saveRows() {
    var data = []; // Creates an array

    // Create a foreach loop over all rows
    $("#experience_table tr").each(function() { 
        var row = $(this);

        // This adds an element to the array for the current row, containing an 
        // anonymous object with the data of the current row
        data.push({ someData: $(row).find("td.experience").val() }); 
    });

    $.ajax( { ... } ) // Create ajax call to your server (webservice)
}

Тогда вам понадобится веб-сервис на сервере. Это часть ASP.NET. Я бы предложил вам настроить службу WCF. Взгляните на учебник здесь:
http://www.codeproject.com/Articles/627082/How-to-Consume-WCF-Service-using-JavaScript-Proxy

Если у вас есть дополнительные вопросы, не стесняйтесь спрашивать!

0

Вот пример того, как я отправляю электронное письмо с ASP и jQuery. Принципы одинаковы, поэтому вы сможете хорошо ее адаптировать.

JQuery

function sendEmail() {
   $("#email").dialog({
       modal: true,
       width: 550,
       buttons: {
            "Send": function () {
                var btn = document.getElementById("<%=lbSend.ClientID %>");
                if (btn) btn.click();
                $(this).dialog("close");
             },
             Cancel: function () {
                $(this).dialog("close");
             }
          }
        });
        jQuery("#email").parent().appendTo(jQuery("form:first"));//this is key as it makes sure it finds the textboxes within the dialog. Without this, you will insert blank values. 
        }

ASP

<div class="popUpStyle" title="Send Email" id="email" style="display: none">
     <asp:Label ID="lblTo" runat="server" Text="To: " Font-Bold="true"></asp:Label><asp:Label runat="server" ID="lblSendTo" Text=""></asp:Label>&nbsp;&nbsp;&nbsp;&nbsp;<asp:Label ID="lblFrom" Font-Bold="true" runat="server" Text="From: "></asp:Label><asp:Label runat="server" ID="lblSendFrom" Text="[email protected]"></asp:Label>
     <br />
     <asp:Label ID="lblSubject" Font-Bold="true" runat="server" Text="Subject: "></asp:Label><asp:TextBox ID="tbSubject" runat="server" Width="200px"></asp:TextBox>
     <br />
      <asp:Label ID="lblBody" Font-Bold="true" runat="server" Text="Message:"></asp:Label>
     <br />
     <asp:TextBox ID="tbMessage" runat="server" Width="515px" TextMode="MultiLine" Height="150px"></asp:TextBox>
     <asp:LinkButton ID="lbSend" runat="server" Text="" Width="50px" Font-Size="smaller" OnClick="lbSend_Click"></asp:LinkButton>
 </div>

Код за С#

protected void lbSend_Click(object sender, EventArgs e)
{
    //code to your database
}

Таким образом, с вашим, вам придется немного изменить его. Вам нужно будет создать функцию, которая вызывает скрытый "div". Как вы можете сказать, в разметке ASP я использую asp-элементы управления, поэтому я могу вызвать их из кода, находящегося за ним. Я также использую кнопку ссылки без текста (если вы установите видимость на false, вы не можете запустить кнопку). В моем jQuery я создал свою собственную кнопку "Отправить" и выполнил поиск кнопки ссылки в div, и после нажатия кнопки "Отправить" происходит событие кнопки ссылки. Как я уже сказал, это отправляет электронное письмо, чтобы ваше событие нажатия кнопки было другим. Если вам нужна помощь в написании базы данных, дайте мне знать!

Надеюсь это поможет!

  • 0
    Я не буду использовать постбэки для этого, так как это увеличивает время загрузки сайта, увеличивает нагрузку на сервер и снижает удобство использования. AJAX-вызов был бы намного лучше IMO
  • 0
    Согласен, но если вы не хотите использовать веб-сервис, это все же решение. Я использую приведенный выше код и время загрузки минимально. Если вы не вставляете большой объем данных (похоже, он вставляет 4 значения), он не должен видеть долгое время загрузки.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню