У меня есть 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>
Вот пример веб-метода:
[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, чем просто создать раскрывающийся список, но это должно заставить вас начать.
Кажется, вы используете Java в качестве языка на стороне сервера, но вы не имеете ничего общего с тем, как работает back end. Самый простой ответ: вам нужно следовать этому шаблону:
Если бы я реализовал это, я бы использовал Apache CXF для REST. CXF, как правило, самая простая вещь, которую я видел для начинающих, чтобы написать чистый уровень сервиса в Java в эти дни для чего-то подобного.