().Name("结果").HtmlAttributes(new { @Style = "align:center; font-size:10px; width:985px" }).Events(ev => ev.Change("onChange")).Columns(columns =>{column.Bound(p => p.GivenName).Width(90);column.Bound(p => p.FamilyName).Width(90);column.Bound(p => p.Community).Width(130);}).ToolBar(toolbar => toolbar.Save()).Editable(editable => editable.Mode(GridEditMode.InCell)).Sortable().Pageable(paging => paging.输入(假).数字(真).PreviousNext(真).PageSizes(new int[] { 5, 10, 25, 50 }).刷新(假)).Selectable().Scrollable().ColumnMenu(c => c.Columns(false)).DataSource(dataSource => 数据源.Ajax()//用Ajax绑定而不是服务器绑定.PageSize(10).ServerOperation(真).模型(模型=>{模型.Id(p => p.Pid);model.Field(p => p.FamilyName).Editable(false);model.Field(p => p.GivenName).Editable(false);}).Read(read => read.Action("GetData", "Details").Type(HttpVerbs.Get)).Update("编辑", "详细信息")))<script type="text/javascript">$(document).ready(function () {$('#btnConsumerSearch').click(function (e){var community = $("#Community").val();var familyName = $("#FamilyName").val();var givenName = $("#GivenName").val();$.ajax({类型:'POST',完成:功能(e){$("#Result").data("kendoGrid").dataSource.read();},url: "@(Url.Content("~/Details/GetData/"))",数据: {社区":社区,家庭名称":家庭名称,给定名称":给定名称},成功:函数(){$("#btnSearch").removeAttr('禁用');}});$("#btnSearch").attr('disabled','disabled');});});控制器:
//以下代码将按预期返回数据新结果,但是剑道网格不会使用以下代码的结果刷新:
public ActionResult GetData([DataSourceRequest] DataSourceRequest 请求,SearchCriteria 模型){数据表结果 = GetList(model);Response.Cache.SetCacheability(HttpCacheability.NoCache);返回 Json(result.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);}///<总结>///从客户端表中获取所有可用列表并使用数据表返回///</总结>///<returns></returns>私有数据表 GetList(SearchCriteria 模型,字符串 ReferralListID){使用 (PEntities context = new PEntities()){string ConnectionString = (context.Connection as EntityConnection).StoreConnection.ConnectionString;SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(ConnectionString);builder.ConnectTimeout = 2500;使用 (SqlConnection con = new SqlConnection(builder.ConnectionString)){使用 (SqlDataAdapter 适配器 = 新 SqlDataAdapter()){使用 (SqlCommand cmd = new SqlCommand("spListResults", con)){cmd.CommandType = CommandType.StoredProcedure;cmd.Parameters.Add("paramCommunity", SqlDbType.VarChar, 100).Value = !String.IsNullOrEmpty(model.Community) ?(object)model.Community : DBNull.Value;cmd.Parameters.Add("paramGivenName", SqlDbType.VarChar, 100).Value = !String.IsNullOrEmpty(model.GivenName) ?(object)model.GivenName : DBNull.Value;cmd.Parameters.Add("paramFamilyName", SqlDbType.VarChar, 100).Value = !String.IsNullOrEmpty(model.FamilyName) ?(object)model.FamilyName : DBNull.Value;cmd.Parameters.Add("paramPriority", SqlDbType.VarChar, 10).Value = !String.IsNullOrEmpty(model.Priority) ?(object)model.Priority : DBNull.Value;适配器.SelectCommand = cmd;cmd.CommandTimeout = 0;数据表 dt = 新数据表();适配器.填充(dt);返回 dt;}}}}}
解决方案
试试这个,
在你的 grid
读取方法中,像这样
.Read(read => read.Action("GetData", "Details").Data("GetData"))
你的按钮应该是Submit
Type
<input type="Submit" id="btnSearch" style="height:32px; font-size:14px; background-color:#3399FF" class="k-button" title="搜索" 值="搜索"/>
脚本
函数 GetData() {返回 {HRN: $('#HRN').val(),家庭名称:$('#FamilyName').val(),GivenName: $('#GivenName').val(),优先级:$('#Priority').val()};}$(document).ready(function () {$("#btnSearch").click(function (e) {$("#Result").data("kendoGrid").dataSource.read();$("#Result").data("kendoGrid").refresh();e.preventDefault();});});
控制器
public ActionResult GetData([DataSourceRequest] DataSourceRequest request, string HRN, string FamilyName, string GivenName, string Priority){数据表结果 = GetList(HRN,FamilyName,GivenName,Priority);Response.Cache.SetCacheability(HttpCacheability.NoCache);返回 Json(result.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);}
I having difficulty where the Kendo Ui grid would not rebind with new result after the Search button click.Please let me know how i could achieve this. Thank you
Currently the GetList will return data correctly however the KendoUi grid would not rebind with the new result.
.cshtml
<div id="search">
<div>
<div class="searchOption">
@Html.LabelFor(model => model.HRN)
@Html.EditorFor(model => model.HRN)
</div>
</div>
<div>
<div class="smallBox">
<input type="button" id="btnSearch" style="height:32px; font-size:14px; background-color:#3399FF" class="k-button" title="Search" value="Search" />
</div>
</div>
<div>
<div class="searchOption">
@Html.LabelFor(model => model.FamilyName)
@Html.EditorFor(model => model.FamilyName)
</div>
</div>
<div>
<div class="searchOption">
@Html.LabelFor(model => model.GivenName)
@Html.EditorFor(model => model.GivenName)
</div>
</div>
<div>
<div class="searchOption">
@Html.LabelFor(model => model.Priority)
@Html.EditorFor(model => model.Priority)
</div>
</div>
</div>
@(Html.Kendo().Grid<PWeb_App.ViewModels.ResultModel>()
.Name("Result")
.HtmlAttributes(new { @Style = "align:center; font-size:10px; width:985px" })
.Events(ev => ev.Change("onChange"))
.Columns(columns =>
{
columns.Bound(p => p.GivenName).Width(90);
columns.Bound(p => p.FamilyName).Width(90);
columns.Bound(p => p.Community).Width(130);
})
.ToolBar(toolbar => toolbar.Save())
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Sortable()
.Pageable(paging => paging
.Input(false)
.Numeric(true)
.PreviousNext(true)
.PageSizes(new int[] { 5, 10, 25, 50 })
.Refresh(false)
)
.Selectable()
.Scrollable()
.ColumnMenu(c => c.Columns(false))
.DataSource(dataSource => dataSource
.Ajax()//bind with Ajax instead server bind
.PageSize(10)
.ServerOperation(true)
.Model(model =>
{
model.Id(p => p.Pid);
model.Field(p => p.FamilyName).Editable(false);
model.Field(p => p.GivenName).Editable(false);
})
.Read(read => read.Action("GetData", "Details").Type(HttpVerbs.Get))
.Update("Edit", "Details")
)
)
<script type="text/javascript">
$(document).ready(function () {
$('#btnConsumerSearch').click(function (e){
var community = $("#Community").val();
var familyName = $("#FamilyName").val();
var givenName = $("#GivenName").val();
$.ajax({
type: 'POST',
complete: function(e) {
$("#Result").data("kendoGrid").dataSource.read();
},
url: "@(Url.Content("~/Details/GetData/"))",
data: {
"Community":community,
"FamilyName":familyName,
"GivenName":givenName
},
success: function () {
$("#btnSearch").removeAttr('disabled');
}
});
$("#btnSearch").attr('disabled','disabled');
});
});
</script>
controller:
//The following code will return data new result as expected however the kendo grid does not refresh with the result of the following code:
public ActionResult GetData([DataSourceRequest] DataSourceRequest request, SearchCriteria model)
{
DataTable result = GetList(model);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
return Json(result.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
/// <summary>
/// Get all available List from Client table and return using datatable
/// </summary>
/// <returns></returns>
private DataTable GetList(SearchCriteria model, string ReferralListID)
{
using (PEntities context = new PEntities())
{
string ConnectionString = (context.Connection as EntityConnection).StoreConnection.ConnectionString;
SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder(ConnectionString);
builder.ConnectTimeout = 2500;
using (SqlConnection con = new SqlConnection(builder.ConnectionString))
{
using (SqlDataAdapter adapter = new SqlDataAdapter())
{
using (SqlCommand cmd = new SqlCommand("spListResults", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("paramCommunity", SqlDbType.VarChar, 100).Value = !String.IsNullOrEmpty(model.Community) ? (object)model.Community : DBNull.Value;
cmd.Parameters.Add("paramGivenName", SqlDbType.VarChar, 100).Value = !String.IsNullOrEmpty(model.GivenName) ? (object)model.GivenName : DBNull.Value;
cmd.Parameters.Add("paramFamilyName", SqlDbType.VarChar, 100).Value = !String.IsNullOrEmpty(model.FamilyName) ? (object)model.FamilyName : DBNull.Value;
cmd.Parameters.Add("paramPriority", SqlDbType.VarChar, 10).Value = !String.IsNullOrEmpty(model.Priority) ? (object)model.Priority : DBNull.Value;
adapter.SelectCommand = cmd;
cmd.CommandTimeout = 0;
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
}
}
}
}
}
解决方案
Try like this,
In your grid
read method in view like this
.Read(read => read.Action("GetData", "Details").Data("GetData"))
You button should be Submit
Type
<input type="Submit" id="btnSearch" style="height:32px; font-size:14px; background-color:#3399FF" class="k-button" title="Search" value="Search" />
Script
function GetData() {
return {
HRN: $('#HRN').val(),
FamilyName: $('#FamilyName').val(),
GivenName: $('#GivenName').val(),
Priority: $('#Priority').val()
};
}
$(document).ready(function () {
$("#btnSearch").click(function (e) {
$("#Result").data("kendoGrid").dataSource.read();
$("#Result").data("kendoGrid").refresh();
e.preventDefault();
});
});
Controller
public ActionResult GetData([DataSourceRequest] DataSourceRequest request, string HRN, string FamilyName, string GivenName, string Priority)
{
DataTable result = GetList(HRN,FamilyName,GivenName,Priority);
Response.Cache.SetCacheability(HttpCacheability.NoCache);
return Json(result.ToDataSourceResult(request), JsonRequestBehavior.AllowGet);
}
这篇关于单击搜索按钮后,Kendo Ui Grid 不会重新绑定的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文