asp.net-mvc – 如何提交本地jqgrid数据和表单输入元素
|
页面包含带有输入元素和jqgrid数据的单个表单.
如果按下提交按钮,如何提交所有这些数据? jqGrid可能在元素中保存检索到的json表.在这种情况下,表单插件无法读取此数据. 如何获取和提交使用loadonce检索的所有数据:true并编辑? UPDATE1 根据Oleg的回答,我试过: function SaveDocument() {
var gridData = $("#grid").jqGrid('getGridParam','data');
var postData = JSON.stringify(gridData);
$('#_detail').val( postData );
var res = $("#Form").serializeArray();
$.ajax({ type: "POST",url: 'Edit'
data : res
});
}
}
aspx页面: <form id="Form" class='form-fields'> .... other form fields <input name='_detail' id='_detail' type='hidden' /> </form> <div id="grid1container" style="width: 100%"> <table id="grid"> </table> </div> 在ASP.NET MVC2 Controller Edit方法中,我尝试使用解析结果 public JsonResult Edit(string _detail) {
var order = new Order();
UpdateModel(order,new HtmlDecodeValueProviderFromLocalizedData(ControllerContext));
var serializer = new JavaScriptSerializer();
var details = serializer.Deserialize<List<OrderDetails>>>(_detail);
}
Deserialize()调用发生异常.十进制和日期属性以本地化格式传递,但看起来像Deserialize()不解析 怎么修 ? 更新2. 十进制和日期CurrentUICulture值以形式和jqGrid数据的形式出现.提供的示例以正确的形式处理它们但是jqGrid数据失败. public class LocalizedTypeConverter : JavaScriptConverter
{
public override IEnumerable<Type> SupportedTypes
{
get
{
return new ReadOnlyCollection<Type>(new Type[] { typeof(decimal) });
}
}
public override object Deserialize(IDictionary<string,object> dictionary,Type type,JavaScriptSerializer serializer)
{
if (dictionary == null)
throw new ArgumentNullException("dictionary");
if (type == typeof(decimal))
return decimal.Parse(dictionary["resources"].ToString(),CultureInfo.CurrentCulture);
return null;
}
public override IDictionary<string,object> Serialize(object obj,JavaScriptSerializer serializer)
{
throw new InvalidOperationException("We only Deserialize");
}
}
但转换仍然会导致异常 0,0000不是十进制的有效值.看起来十进制转换器无法覆盖.怎么修 ? 解决方法首先,您可以从jqGrid获取所有本地数据var localGridData = $("#list").jqGrid('getGridParam','data');
如果您只需要发送网格行的子集,就像仅选择行一样,则需要获取_index: var idsToDataIndex = $("#list").jqGrid('getGridParam','_index');
要将数据发送到服务器,您可以使用以下功能 var sendData = function(data) {
var dataToSend = JSON.stringify(data);
alert("The following data are sending to the server:n" + dataToSend);
$.ajax({
type: "POST",url: "yourServerUrl",dataType:"json",data: dataToSend,contentType: "application/json; charset=utf-8",success: function(response,textStatus,jqXHR) {
// display an success message if needed
alert("success");
},error: function(jqXHR,errorThrown) {
// display an error message in any way
alert("error");
}
});
};
在the demo中,您将找到一个更复杂的示例,其中包含两个按钮:“发送所有网格包含”,“发送所选行”.相应的代码如下 $("#sendAll").click(function(){
var localGridData = grid.jqGrid('getGridParam','data');
sendData(localGridData);
});
$("#sendSelected").click(function(){
var localGridData = grid.jqGrid('getGridParam','data'),idsToDataIndex = grid.jqGrid('getGridParam','_index'),selRows = grid.jqGrid('getGridParam','selarrrow'),dataToSend = [],i,l=selRows.length;
for (i=0; i<l; i++) {
dataToSend.push(localGridData[idsToDataIndex[selRows[i]]]);
}
sendData(dataToSend);
});
哪里 var grid = $("#list"),decodeErrorMessage = function(jqXHR,errorThrown) {
var html,errorInfo,errorText = textStatus + 'n<br />' + errorThrown;
if (jqXHR.responseText.charAt(0) === '[') {
try {
errorInfo = $.parseJSON(jqXHR.responseText);
errorText = "";
for (i=0; i<errorInfo.length; i++) {
if (errorText.length !== 0) {
errorText += "<hr/>";
}
errorText += errorInfo[i].Source + ": " + errorInfo[i].Message;
}
}
catch (e) { }
} else {
html = /<body.*?>([sS]*)</body>/i.exec(jqXHR.responseText);
if (html !== null && html.length > 1) {
errorText = html[1];
}
}
return errorText;
},sendData = function(data) {
var dataToSend = JSON.stringify(data);
alert("The following data are sending to the server:n"+dataToSend);
$.ajax({
type: "POST",jqXHR) {
// remove error div if exist
$('#' + grid[0].id + '_err').remove();
alert("success");
},errorThrown) {
// remove error div if exist
$('#' + grid[0].id + '_err').remove();
// insert div with the error description before the grid
grid.closest('div.ui-jqgrid').before(
'<div id="' + grid[0].id + '_err" style="max-width:' + grid[0].style.width +
';"><div class="ui-state-error ui-corner-all" style="padding:0.7em;float:left;"><span class="ui-icon ui-icon-alert" ' +
'style="float:left; margin-right: .3em;"></span><span style="clear:left">' +
decodeErrorMessage(jqXHR,errorThrown) + '</span></div><div style="clear:left"/></div>');
}
});
};
我认为,您将在服务器上遇到更困难,更复杂的问题.在并发错误的情况下,但我之前写过关于这些问题的文章.正是因为我个人永远不会在服务器上实现多行保存的问题. 更新:要从表单中获取数据,您可以使用jQuery.serialize.您应该对要序列化的表单中的所有字段使用name属性.您需要发送的所有数据 var allData = {
localGridData: grid.jqGrid('getGridParam',formData: $("#formid").serialize()
};
您可以像我之前描述的那样发送数据:sendData(allData). (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 使用ASP.NET AJAX Control Toolkit设置焦点
- msbuild – 如果不指定目标框架,则不支持“发布”目标
- 验证 – ASP.Net MVC3电子邮件/电话数据注释不起作用
- asp.net-mvc – ASP.NET MVC:如何创建一个可用的UrlHelper
- asp.net – 如何将转发器绑定到列表以更新绑定的项目? (2种
- ASP.NET:突出显示当前页面的菜单项
- asp.net-mvc-3 – 与SQL Server建立连接时发生与网络相关或
- asp.net – 文件下载问题:文件名与空格被截断!
- 如何将组名应用于asp.net中的HTML单选按钮?
- asp.net – 实体框架:坚持在多对多添加新实体,而不是重新使
- asp.net-mvc – mvc创建我自己的html帮助器,如何
- asp.net-mvc – MVC的实际应用||什么时候使用,还
- asp.net-core-mvc – 在EF7中加载引用
- ASP.NET WebHooks和Signal-R之间的区别
- asp.net-mvc – 使用Knockout JS MVC服务器端模型
- asp.net – 初学者有一个好主意 – 我可以自己开
- ASP.net使用表单将数据插入到sql server表中
- asp.net-mvc-3 – 在控制器动作中使用T4MVC生成U
- asp.net-mvc – 遵循最佳编程实践的Asp.Net Mvc应
- Asp.Net:在iis中调试网站
