Как получить данные из разных таблиц, используя JQuery

0

У меня есть 2 таблицы, например

public class Block
  {
public int ID{ set; get; }
public string Name{ set; get; }
public string Price { set; get; }
}

public class Room
{
public int ID{ set; get; }
public string Name{ set; get; }
public string Price { set; get; }
}

Из этих таблиц, как я могу выбрать цену из другой таблицы? Например, когда пользователь выбирает имя (из класса Block) и имя (из класса Room). У каждого имени есть своя цена, если пользователь выбирает BlockA, стоимость которого составляет 22 доллара (от класса Block) и SitRoom, стоимость которого составляет 25 долларов США (из класса Room). Javascript должен добавить их и отобразить добавление на другой веб-странице: Этот DEMO описывает, что мне нужно, но вместо этого имеет значения в выпадающем меню, как я могу получить его из базы данных, чтобы кнопка onClick Search отображала расчет. Это мой метод Ajax, который получает имя места и заполняется в выпадающем меню.

        function Method() {
        ajReq = $.ajax({
            type: "POST",
            url: "Services/",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (data) {
                var opts = '';
                $.each(data.d, function (i) {
                    opts += '<li>' + '<a class="">' + this.Name+ '</a>' + '</li>';

                });
                $('.Dropdown').html(opts);
            }
        });
    }

Это моя кнопка onclick:

        $(document).on("click", "#buttonClick", function () {
  });

Мой веб-метод для Ajax:

        [WebMethod]
    public IEnumerable<Room> Method()
    {
        List<Room> r= data.getRoom();
        return r;
    }
data is my class name and getRoom is a method
    public List<ToBooking> getRoom()
    {
        List<Room> t= new List<Room>();
        SqlConnection myConnection = new etc..);
        SqlCommand myCommand = new SqlCommand("SELECT * FROM TableName", myConnection);

        myConnection.Open();
        SqlDataReader reader = myCommand.ExecuteReader();
        while (reader.Read())
        {
                            b.Name= reader["Name"].ToString();
        }

    }


         <div class="btn-group">
            <button type="button" id="blockss" class="btn btn-default dropdown-toggle" data-toggle="dropdown">
                <span id="headingFrom">From:</span><span class="caret"></span>
            </button>
            <ul class="dropdown-menu Dropdown">
                <li><a class=""></a></li>
            </ul>
        </div>
  • 0
    Какой язык на стороне сервера вы используете? Вы должны написать веб-сервисы, чтобы поразить вашу базу данных и передать вам объект json.
  • 0
    я использую C♯ для подключения к базе данных .asmx страниц для [WebMethod] и Ajax-вызовов для выполнения действия.
Показать ещё 2 комментария
Теги:

2 ответа

0

Вот пример веб-метода:

[System.Web.Services.WebService(Namespace = "http://tempuri.org/")]
[System.Web.Services.WebServiceBinding(ConformsTo = System.Web.Services.WsiProfiles.BasicProfile1_1)]
[System.Web.Script.Services.ScriptService]
public class Demo : System.Web.Services.WebService
{
    public class Block
    {
        public int ID { set; get; }
        public string Name { set; get; }
        public string Price { set; get; }
    }
    [System.Web.Services.WebMethod]
    public List<Block> GetBlockList()
    {
        List<Block> result = new List<Block>();
        using (DataTable dt = new DataTable())
        {
            using (SqlConnection conn = new SqlConnection("Sql Connection String Here"))
            {
                string sql = "SELECT id, name, price FROM tableName WHERE block = @block";
                using (SqlCommand cmd = new SqlCommand(sql, conn))
                {
                    try
                    {
                        conn.Open();
                    }
                    catch (Exception e)
                    {
                        string ex = e.ToString(); // Do something with the error
                    }
                    dt.Load(cmd.ExecuteReader());
                }
            }
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                result.Add(new Block(){
                    ID = int.Parse(dt.Rows[i].ItemArray.GetValue(0).ToString()),
                    Name = dt.Rows[i].ItemArray.GetValue(1).ToString(),
                    Price = dt.Rows[i].ItemArray.GetValue(2).ToString()
                });
            }
        }
        return result;
    }
}

И теперь AJAX создаст выпадающий список вместе с обработчиком событий для раскрывающегося списка, чтобы отобразить цену при изменении выбора:

$(document).ready(function (){
    $.ajax({
        type: "POST",
        url: "/Services/GetBlockList",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        failure: function () { alert("failure"); },
        error: function () { alert("error"); },
        success: function (response) {
            var row = response.d;
            var html = "<select id=\"BlockList\">";
            html += "<option value=\"0\">Select</option>";
            $.each(row, function (index, item) {
                html += "<option value=\"" + item.Price + "\">";
                html += item.Name;
                html += "</option>";
            });
            html += "</select>";
            $("#htmlBody").append(html);
        }
    });
    $("#BlockList").change(function () {
        alert("Price: " + $(this).val());
    });
});

Это его основа. Конечно, вы можете сделать гораздо больше с AJAX, чем просто создать раскрывающийся список, но это должно заставить вас начать.

  • 0
    Здесь вы добавляете как цену, так и название. Я не хочу, чтобы цена отображалась в выпадающем меню. Цена должна быть рассчитана по нажатию кнопки. И в #BlockList как мне добавить две цены?
  • 0
    Вы пробовали этот пример? Цена указана в поле значения опции, которое не отображается. Единственное, что будет отображаться, это item.Name. Вы можете получить значения из нескольких раскрывающихся списков и добавить их вместе с JavaScript / jQuery. $ ("# item1"). val () + $ ("# item2"). val ()
0

Кажется, вы используете Java в качестве языка на стороне сервера, но вы не имеете ничего общего с тем, как работает back end. Самый простой ответ: вам нужно следовать этому шаблону:

  1. Напишите функцию REST в Java для обработки определенного типа вызова AJAX, например, для поиска базы данных.
  2. Позвоните, что функция REST с jQuery предоставляет правильные параметры.
  3. Попросите обработчик jQuery правильно вставить данные в DOM, но вы хотите.

Если бы я реализовал это, я бы использовал Apache CXF для REST. CXF, как правило, самая простая вещь, которую я видел для начинающих, чтобы написать чистый уровень сервиса в Java в эти дни для чего-то подобного.

  • 0
    Я использую C♯ [WebMethod], я обновил свой вопрос. Я использую aql studio management studio для создания своей базы данных.

Ещё вопросы

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