html - 使用 ajax 和 Telerik Kento 打开带有搜索结果的模态
问题描述
我对使用 Telerik Kendo 有点陌生,这就是我需要做的:
我有一个带有搜索文本框的页面。当您单击搜索按钮时,会出现一个带有建议的剑道网格,当您选择任何建议时,页面底部会出现一个详细信息部分。
我需要的是,当您单击搜索按钮时,应该会打开一个带有 Kendo 网格建议的模态,当您选择任何建议时,模态就会关闭,然后在搜索部分之后显示详细信息表单。
这是此时的代码:
搜索面板:
<div style="margin:5px; padding:10px">
@using (Ajax.BeginForm("SearchCustomer",
new AjaxOptions
{
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "searchResults",
HttpMethod = "POST",
OnSuccess = "SearchSuccess",
LoadingElementId = "loadingImage",
OnFailure = "SearchFail",
}))
{
@Html.AntiForgeryToken()
<div class="input-group" style="justify-content:right">
<span class="input-group-btn">
Buscar Cliente:
<input id="searchText" placeholder="Identificación o nombre" name="searchText" type="text" class="form-control" style="height:22px;" />
<input id="distributorId" name="distributorId" type="hidden" class="form-control" value="@Model" />
<button id="btnSearch" type="submit" class="btn btn-default btn-sm" style="margin:0px; padding:0px" @*data-toggle="modal" data-target="#loginModal"*@>
<i class="icon-search" style="margin:2px"></i> Buscar
</button>
</span>
</div>
<br />
}
<div id="searchResults" style="margin:2px; padding:3px">
</div>
</div>
选定客户:
<script type="text/javascript">
function onChange(arg) {
var selectedRows = this.select();
var dataItem = this.dataItem(selectedRows[0]);
var url = "@Url.Action("CustomerLookup")" + "?customerId=" + dataItem.CustomerId + "&distributorId=" +@Model.Split('_')[1];
$("#loadingImage").show();
$('#currentSelectedCustomer').load(url, function (result) {
$("#loadingImage").hide();
if (result != "Error") {
$("#customerPreview").show();
}
});
}
</script>
@(Html.Kendo().Grid<CrediNet.Web.Models.CustomerModel>()
.Name("CustomersResultGrid")
.Columns(columns =>
{
columns.Bound(p => p.FirstName);
columns.Bound(p => p.LastName);
columns.Bound(p => p.LastName2);
})
.Pageable()
.Sortable()
.Scrollable()
.Selectable(selectable => selectable.Mode(GridSelectionMode.Single).Type(GridSelectionType.Row))
.Events(events => events.Change("onChange"))
.DataSource(dataSource => dataSource
.Ajax()
.Model(model => model.Id(p => p.CustomerId))
.Read(r => r.Action("SearchCustomer_Read", "POS", new { searchText = Model.Split('_')[0] }))
)
)
<div id="customerPreview" style="display:none;">
<br />
<div class="widget-box">
<div class="widget-header widget-header-small">
<h5 class="lighter">Cliente</h5>
</div>
<div class="widget-body">
<div class="widget-main">
<div id="currentSelectedCustomer">
</div>
</div>
</div>
</div>
</div>
然后是当前 celected 客户页面:
@model CrediNet.Web.Models.CustomerModel
<script type="text/javascript">
function EditCustomer() {
$("#loadingImage").show();
var url = "@Url.Action("EditCustomer", new { id = Model.CustomerId })";
$.ajax({
url: url,
success: function (result) {
$("#selectClientPanel").html(result);
},
error: function (xhr, ajaxOptions, thrownError) {
if (xhr.status === 0) {
notificationHelper.Show("Servidor no responde", 2, false);
} else {
notificationHelper.Show(xhr.responseText, 2, false);
}
},
complete: function (jqXHR, status) {
$("#loadingImage").hide();
}
});
}
</script>
<!-- Se inhabilitará hasta encontrar la forma de que no se repitan los Clientes y se pueda editar el mismo-->
<button id="btnEditCustomer" onclick="EditCustomer();" class="btn btn-purple btn-sm">
<i class="icon-pencil"></i> Editar cliente
</button>
<br />
<br />
<div class="form-horizontal">
@if (Model.Flag)
{
<div class="form-group">
<div class="col-xs-2">
</div>
<div class="col-xs-8">
<strong>
<span style="color: red;">
Este cliente ha sido Inactivado. <br />
Razón: @Model.FlagComments
</span>
</strong>
</div>
</div>
}
<!-- info básica -->
<div class="form-group">
@Html.LabelFor(m => m.FirstName, new { @class = "control-label col-xs-2" })
<div class="col-xs-8">
<strong>
@Html.DisplayFor(m => m.FirstName) @Html.DisplayFor(m => m.LastName) @Html.DisplayFor(m => m.LastName2)
</strong>
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.DrivingLicenceCode, new { @class = "control-label col-xs-2" })
<div class="col-xs-8">
<strong>@Html.DisplayFor(m => m.DrivingLicenceCode)</strong>
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.IFECode, new { @class = "control-label col-xs-2" })
<div class="col-xs-8">
<strong>@Html.DisplayFor(m => m.IFECode)</strong>
</div>
</div>
<div class="form-group">
@Html.LabelFor(m => m.PassportCode, new { @class = "control-label col-xs-2" })
<div class="col-xs-8">
<strong>@Html.DisplayFor(m => m.PassportCode)</strong>
</div>
</div>
<!-- dirección -->
<div class="form-group">
@Html.LabelFor(m => m.SimpleAddressModel, new { @class = "control-label col-xs-2" })
<div class="col-xs-8">
<strong>@Model.SimpleAddressModel.StreetName #@Model.SimpleAddressModel.ExtNumber @Model.SimpleAddressModel.IntNumber Col.@Model.SimpleAddressModel.NeighbourhoodName @Model.SimpleAddressModel.CityName</strong>
</div>
</div>
<!-- Teléfonos -->
<div class="form-group">
@Html.LabelFor(m => m.PhoneNumbers, new { @class = "control-label col-xs-2" })
<div class="col-xs-8">
@foreach (var phone in Model.PhoneNumbers)
{
<div><strong>@phone.Phone</strong></div>
}
</div>
</div>
</div>
<script>
@if(Model.Flag)
{
<text>
$("#CustomerId").val(0);
$('#btnSubmitSale').prop('disabled', true);
bootbox.alert("Este cliente ha sido desactivado. <br />Razón: @Model.FlagComments");
</text>
}
else
{
<text>
$("#CustomerId").val(@Model.CustomerId);
$('#btnSubmitSale').prop('disabled', false);
</text>
}
//$("#showPoints").val(@Model.IsDistributor.ToString().ToLower());
if (@Model.IsDistributor.ToString().ToLower() == true) {
$(".points").removeAttr("hidden");
}
if (@Model.IsDistributor.ToString().ToLower() == true) {
$("#isDistributor").prop("checked", true);
$("#pointCheck").css("display", "inline");
} else {
$("#isDistributor").prop("checked", false);
$("#pointCheck").css("display", "none");
}
$( "#isDistributor" ).trigger( "change" );
</script>
有任何想法吗?
解决方案
推荐阅读
- apache-spark - Spark:AttributeError:“SQLContext”对象没有属性“createDataFrame”
- python - Python中的循环可视化与堆积范围
- html - 我正在尝试使用 ngFor 在引导选项卡上循环,
- git - 我可以依靠`git fetch
`? - python - 如何使用标准 WGS84 将纬度和经度转换为具有坐标中心的 X 和 Y?
- javascript - 如何从 github api 输出存储库
- c# - 当 asp.net 核心应用程序中没有任何错误时,有没有办法获取调用堆栈?
- angular - 自定义图例时出现错误“ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked”
- c++ - 全局变量与通过多个函数传递相同的变量
- amazon-web-services - Aws Amplify 上的 React 应用程序在尝试访问 Elastic Beanstalk Springboot 应用程序时收到 ERR_CONNECTION_REFUSED