我有一个场景,我的第一个索引页面按行方式加载了一些详细数据。此外,我有3个文本框RequestID,FromDate和ToDate来过滤页面索引视图上的数据。一旦我在尊重的文本框中输入FromDate和ToDate并单击按钮,通过javascript代码我将FromDate和ToDate发送到同一个Index控制器,以根据FromDate和ToDate过滤数据。
使用FromDate和ToDate参数调用Index控制器,并且基于FromDate和ToDate的数据也会被正确过滤。
但是,一旦过滤后的数据被发送到索引视图以显示,它就不会显示过滤后的数据,尽管它会显示现有数据。
请找到以下代码供您参考。
以下是索引控制器代码。
public ActionResult Index(int? id, DateTime? StartDate, DateTime? EndDate, string status, DateTime? CloseDate)
{
IList<ActiveSupportIndexViewModel> activeSupport;
if(StartDate == null && EndDate == null)
{
activeSupport = GetSupportIssueDetails(0, null, null);
}
else
{
activeSupport = GetSupportIssueDetails(0, StartDate, EndDate);
}
return View(activeSupport);
}
最初调用activeSupport = GetSupportIssueDetails(0, null, null)
并显示所有数据。
输入FromDate和ToDate后,点击按钮activeSupport = GetSupportIssueDetails(0, StartDate, EndDate)
即可调用并过滤数据。
下面是编写的java脚本代码。
<script type="text/javascript">
$(function () {
$("#Search").click(function () {
var RID = $('#txtRequestID').val();
var SDate = $('#txtStartDate').val();
var EDate = $('#txtEndDate').val();
var stat = $('#txtStatus').val();
var CDate = $('#txtCloseDate').val();
alert(RID)
alert(SDate);
alert(EDate);
alert(stat);
alert(CDate);
$.ajax({
url: 'Home/Index',
type: 'GET',
data: { id: RID, StartDate: SDate, EndDate: EDate, status: stat, CloseDate: CDate },
success: function (result) {
alert(result.name);
//alert("Hello");
},
error: function () {
alert("error");
}
});
return false;
});
});
</script>
javasctip也可以正常执行,并使用FromDate和ToDate将数据发送到控制器。
使用FromDate和ToDate调用Index控制器后,数据将被过滤并发送到视图。但是视图不会与新过滤的数据一起出现。相反,它会显示消息框,它位于下面的javascript代码
success: function (result) {
alert(result.name);
现有数据保持不变。
有人可以帮我解决这个问题。
如有更多信息,请告知我们。 提前谢谢。
答案 0 :(得分:0)
在“索引”页面中,创建一个带有id的部分文件,其中放置显示记录的数据 在ajax上成功用ajax数据替换部分文件 请参阅此link
答案 1 :(得分:0)
@Anand
感谢您的链接。它工作正常。
我发布了以下我根据你的建议改变的代码。
<form id="xxx">8 text field code ...</form>
<form id="yyy">8 text field code ...</form>
<form id="zzz">8 text field code ...</form>
<script>
$(document).ready(function() {
$("#ifbuttonclick").click(function(e) {
var jsonData = {};
var form1 = $("#xxx").serializeArray(); //get form1 data
var form2 = $("#yyy").serializeArray();
var form3 = $("#zzz").serializeArray();
var formData = {
"form1": form1,
"form2": form2,
"form3": form3
};
console.log(formData); // working fine
$.each(formData, function() {
if (jsonData[this.name]) { //**here shows JsonData is Undefined**
if (!jsonData[this.name].push) {
jsonData[this.name] = [jsonData[this.name]];
}
jsonData[this.name].push(this.value || '');
} else {
jsonData[this.name] = this.value || '';
}
});
console.log(jsonData);
$.ajax({
type: "POST",
beforeSend: function(request) {
request.setRequestHeader("Authorization", "xxxxxxxxxxxx");
},
url: "...mydburl....",
contentType: 'application/json',
dataType: 'json',
data: jsonData,
success: function(data, textStatus, jqXHR) {
$("#response").text("");
$("#response").append(data);
}
});
e.preventDefault();
})
})
</script>
再次感谢你。