Javascript 如何从Html助手类调用Java脚本函数';脚本函数?
我有一个razor视图,其中有一个名为getDocumentDetails的函数。我已经编写了一个html助手类,如下所示Javascript 如何从Html助手类调用Java脚本函数';脚本函数?,javascript,asp.net-mvc,razor,jqgrid,html-helper,Javascript,Asp.net Mvc,Razor,Jqgrid,Html Helper,我有一个razor视图,其中有一个名为getDocumentDetails的函数。我已经编写了一个html助手类,如下所示 public static MvcHtmlString CreateJQGrid<T>(this HtmlHelper helper, GridViewModel<T> model) { bool blnEditIcon = false; bool blnEditRights = false;
public static MvcHtmlString CreateJQGrid<T>(this HtmlHelper helper, GridViewModel<T> model)
{
bool blnEditIcon = false;
bool blnEditRights = false;
var htmlBuilder = new StringBuilder();
// Place the Upload Button.
if ((!string.IsNullOrEmpty(model.UploadAction) || !string.IsNullOrEmpty(model.AddNewAction)) && model.UserAccessRights != Constants.UserType.View)
{
htmlBuilder.AppendFormat(@"<div align='right' class='icon-list'>");
if (!string.IsNullOrEmpty(model.UploadAction) && model.UserAccessRights != Constants.UserType.Checker && model.UploadRights == true)
{
htmlBuilder.AppendFormat(@"<a class=""upload"" href=""{0}"" id=""Upload"">Upload </a>", model.UploadAction);
}
// Place the Add New Button
if (!string.IsNullOrEmpty(model.AddNewAction) && model.UserAccessRights != Constants.UserType.Checker)
{
htmlBuilder.AppendFormat(@"<a class=""addnew"" href=""{0}"" id=""AddNew"">Add New</a>", model.AddNewAction);
}
htmlBuilder.AppendFormat(@" </div><br /><br />");
}
htmlBuilder.AppendFormat(@"<div align='right' class='icon-list'>");
if (!model.BulkApprovalRights)
model.multiselectCheckBox = false;
htmlBuilder.AppendFormat(@"</div>");
htmlBuilder.AppendFormat(@"<table id=""{0}"" class=""scroll"" cellpadding=""0"" cellspacing=""0""></table>", model.Id);
htmlBuilder.AppendFormat(@"<div id=""{0}Pager"" class=""scroll"" style=""text-align:center;""></div>", model.Id);
htmlBuilder.AppendFormat(@"<script type=""text/javascript"">");
htmlBuilder.AppendFormat(@" function EditingValidation(id) {{
var selr = $('#{0}').jqGrid('getGridParam','selrow');
var rowData = $('#{0}').getRowData(selr);
if(rowData.Edit=='')
{{
alert('You cannot edit the selected record.'); return [false, ''];
}}
return [true, ''];
Rejected
}}", model.Id);
//Md Aslam
htmlBuilder.AppendFormat(@" function addLinkk(cellvalue, options,
rowObject) {{
alert('AddLinkk');
return '<a href=""#"" onclick=GridCellClick(""'+cellvalue+'"")><font color=""blue""><u>'+cellvalue+'</u></font></a>';
}}", model.Id);
htmlBuilder.AppendFormat(@" function GridCellClick(cellValue) {{
getDocumentDetails(); }}", model.Id);
htmlBuilder.AppendFormat(@"function highlight (cellValue, options,
rowObject) {{
if(cellValue=='Approved')
return '<span class=""label-
successforecolor"">'+cellValue+'</span>';
else if(cellValue=='Rejected')
return '<span class=""label-
dangerforecolor"">'+cellValue+'</span>';
else if(cellValue=='Pending')
return '<span class=""label-infoforecolor"">'+cellValue+'</span>';
else
return cellValue;
}}");
htmlBuilder.AppendFormat(@"$(function()");
htmlBuilder.AppendFormat(@"{{");
htmlBuilder.AppendFormat(@"var lastsel;");
htmlBuilder.AppendFormat(@"$('#{0}').jqGrid({{", model.Id);
htmlBuilder.AppendFormat(@"url: '{0}',", WebExtensions.GetUrlContent() + model.Url);
//htmlBuilder.AppendFormat(@"editurl: '/InwardOutward/Edit',");
if (!string.IsNullOrEmpty(model.EditUrl))
htmlBuilder.AppendFormat(@"editurl: '{0}',", WebExtensions.GetUrlContent() + model.EditUrl);
htmlBuilder.AppendFormat(@"datatype: 'json',");
htmlBuilder.AppendFormat(@"mtype: 'POST',height:280,");
//Create Columns Names
htmlBuilder.AppendFormat(@"colNames: [");
foreach (var action in model.Actions)
{
htmlBuilder.AppendFormat(@"'{0}',", action.Name.ToString());
}
foreach (var column in model.Columns)
{
htmlBuilder.AppendFormat(@"'{0}',", column.Name.ToString());
}
htmlBuilder.AppendFormat(@"],");
//Create Columns
htmlBuilder.AppendFormat(@"colModel: [");
foreach (var column in model.Columns.OrderBy(x => x.ActionOrder))
{
if (column.Name.ToUpper() == "REMARKS")
{
htmlBuilder.AppendFormat(@"{{name: '{0}',
index: '{1}',
align: '{2}',
search: {3},
sortable: {4},
width: {5},
hidden: {6},
sorttype: '{7}',
sortable: true,
searchoptions: {{sopt:[{8}]}},
editable: {9},
hidedlg: {10},
edittype:'{11}',
editrules: {{custom: true, custom_func: EditingValidation}},
classes: 'textInDiv',
formatter: function (v) {{return '<div>' + $.jgrid.htmlEncode(v) + '</div>';}}
", column.Index.ToString()
, column.Index
, column.Align == null ? "left" : column.Align.ToLower()
, column.IsSearch.ToString().ToLower()
, column.IsSortable.ToString().ToLower()
, column.Width > 0 ? column.Width : 100
, column.IsHidden.ToString().ToLower()
, column.SortType == null ? "string" : column.SortType.ToString().ToLower()
, column.SearchOptions == null ? "'eq','bw','bn','cn','nc','ew','en'" : column.SearchOptions.ToString().ToLower()
, column.IsEditable.ToString().ToLower()
, column.IsEditHidden.ToString().ToLower()
, column.IsEditTypeSelect == true ? "select" : "text"
);
}
else
{
htmlBuilder.AppendFormat(@"{{name: '{0}',
index: '{1}',
align: '{2}',
search: {3},
sortable: {4},
width: {5},
hidden: {6},
sorttype: '{7}',
sortable: true,
searchoptions: {{sopt:[{8}]}},
editable: {9},
hidedlg: {10},
edittype:'{11}',
editrules: {{custom: true,
custom_func: EditingValidation}}"
, column.Index.ToString()
, column.Index
, column.Align == null ? "left" : column.Align.ToLower()
, column.IsSearch.ToString().ToLower()
, column.IsSortable.ToString().ToLower()
, column.Width > 0 ? column.Width : 100
, column.IsHidden.ToString().ToLower()
, column.SortType == null ? "string" :
column.SortType.ToString().ToLower()
, column.SearchOptions == null ?
"'eq','bw','bn','cn','nc','ew','en'" :
column.SearchOptions.ToString().ToLower()
, column.IsEditable.ToString().ToLower()
, column.IsEditHidden.ToString().ToLower()
, column.IsEditTypeSelect == true ? "select" : "text"
);
}
if (column.Index == "Status")
htmlBuilder.AppendFormat(@",formatter:highlight
}},");
else
htmlBuilder.AppendFormat(@"}},");
if (column.IsEditable && !blnEditRights &&
!string.IsNullOrEmpty(model.EditUrl))
blnEditIcon = true;
}
htmlBuilder.AppendFormat(@"],");
htmlBuilder.AppendFormat(@"loadtext: 'Loading {0}',",
model.Caption);
htmlBuilder.AppendFormat(@"pager: jQuery('#{0}Pager'),", model.Id);
htmlBuilder.AppendFormat(@" rowNum: 20,
rowList: [10, 20, 30, 40, 50, 60, 70,
80, 90, 100, 200,500,1000,100000000],
loadonce: true,
ignoreCase: true,
viewrecords: true,
");
//htmlBuilder.AppendFormat(@"multiSort: true,");
htmlBuilder.AppendFormat(@"caption: '{0}',", model.Caption);
htmlBuilder.AppendFormat(@"pagepos: 'left',
forceFit: true,
autowidth: true,
shrinkToFit: false,");
htmlBuilder.AppendFormat(@"}});");
htmlBuilder.AppendLine(@"");
htmlBuilder.AppendLine(@"");
htmlBuilder.AppendFormat(@"$('#{0}').jqGrid(", model.Id);
htmlBuilder.AppendFormat(@"'navGrid', '#{0}Pager',{{ search: true,
add: false, edit: true, del: false, refresh: false, searchtext:
'Search',edittext: 'Edit',position: 'left'
,", model.Id);
if (blnEditIcon)
{
htmlBuilder.AppendFormat(@"edit: true, edittext: 'Edit'");
//afterSubmit:function(response, postdata){{ alert('Coming');
var json = response.responseText;var result = JSON.parse(json);return
[result.status,result.message,null]; }}
}
else
{
htmlBuilder.AppendFormat(@"edit: false,");
}
htmlBuilder.AppendFormat(@"
}},");
htmlBuilder.AppendFormat(@" {{
afterSubmit:function(response, postdata){{
if(response.status == 200)
{{
$('.topinfo').html('<div
style=\'color:red\'>'+response.responseText+'</div>');
var tinfoel = $('.tinfo').show();
//tinfoel.delay(1500).fadeOut();
return [true,''];
}} else {{
return [false,'error message'];
}}
}},
onclickPgButtons:function(){{
$('.topinfo').html('<div style=\'color:green\'> </div>');
}}
}},
{{}},
{{}},
{{multipleSearch:true,
multipleGroup:true, showQuery: true,closeAfterSearch: true,searchOnEnter:
true}}");
htmlBuilder.AppendFormat(@");");
/* Add this line to include a separator between buttons */
SeparatorBetweenButtons(model.Id, htmlBuilder);
//Enable the Refresh
htmlBuilder.AppendLine(@"");
htmlBuilder.AppendLine(@"");
htmlBuilder.AppendFormat(@"$('#{0}').jqGrid('navButtonAdd', '#{1}Pager', {{", model.Id, model.Id);
htmlBuilder.AppendFormat(@"caption: 'Refresh',");
htmlBuilder.AppendFormat(@"buttonicon: 'ui-icon-refresh',
title: 'Refresh',");
htmlBuilder.AppendFormat(@"onClickButton: function () {{");
htmlBuilder.AppendFormat(@"$('#{0}').setGridParam({{ datatype:
'json' }});", model.Id);
htmlBuilder.AppendFormat(@"$('#{0}')[0].clearToolbar();", model.Id);
htmlBuilder.AppendFormat(@"$('#{0}').trigger('reloadGrid');",
model.Id);
htmlBuilder.AppendFormat(@"}}");
htmlBuilder.AppendFormat(@"}});");
SeparatorBetweenButtons(model.Id, htmlBuilder);
htmlBuilder.AppendLine(@"");
htmlBuilder.AppendLine(@"");
htmlBuilder.AppendFormat(@"$('#{0}').jqGrid('filterToolbar', {{
searchOperators: true, defaultSearch:'cn' }});", model.Id);
htmlBuilder.AppendFormat(@" }}); ");
htmlBuilder.AppendFormat(@"</script>");
return MvcHtmlString.Create(htmlBuilder.ToString());
}
public static MvcHtmlString CreateJQGrid(此HtmlHelper助手,GridViewModel模型)
{
bool-blnEditIcon=false;
bool blnEditRights=false;
var htmlBuilder=新的StringBuilder();
//放置上传按钮。
if((!string.IsNullOrEmpty(model.UploadAction)| |!string.IsNullOrEmpty(model.AddNewAction))&&model.UserAccessRights!=Constants.UserType.View)
{
htmlBuilder.AppendFormat(@“”);
如果(!string.IsNullOrEmpty(model.UploadAction)&&model.UserAccessRights!=Constants.UserType.Checker&&model.UploadRights==true)
{
htmlBuilder.AppendFormat(@“”,model.UploadAction);
}
//放置“添加新”按钮
如果(!string.IsNullOrEmpty(model.AddNewAction)&&model.UserAccessRights!=Constants.UserType.Checker)
{
htmlBuilder.AppendFormat(@“”,model.AddNewAction);
}
htmlBuilder.AppendFormat(@“
”);
}
htmlBuilder.AppendFormat(@“”);
如果(!model.BulkApprovalRights)
model.multiselectCheckBox=false;
htmlBuilder.AppendFormat(@“”);
htmlBuilder.AppendFormat(@“”,model.Id);
htmlBuilder.AppendFormat(@“”,model.Id);
htmlBuilder.AppendFormat(@“”);
htmlBuilder.AppendFormat(@“函数编辑验证(id)){{
var selr=$('#{0}').jqGrid('getGridParam','selrow');
var rowData=$('#{0}').getRowData(selr);
if(rowData.Edit=='')
{{
警报('您无法编辑所选记录');返回[假',];
}}
返回[true',];
拒绝
}}“,model.Id);
//阿斯拉姆博士
htmlBuilder.AppendFormat(@“函数addLinkk(单元格值、选项、,
行对象){{
警报(“AddLinkk”);
返回“”;
}}“,model.Id);
htmlBuilder.AppendFormat(@)函数GridCellClick(cellValue){{
getDocumentDetails();}}”,model.Id);
htmlBuilder.AppendFormat(@)函数高亮显示(单元格值、选项、,
行对象){{
如果(cellValue=='Approved')
返回“”+单元格值+“”;
else if(cellValue=='Rejected')
返回“”+单元格值+“”;
else if(cellValue=='Pending')
返回“”+单元格值+“”;
其他的
返回单元格值;
}}");
AppendFormat(@“$(function()”);
AppendFormat(@“{”);
AppendFormat(@“var lastsel;”);
htmlBuilder.AppendFormat(@“$('{0}')).jqGrid({{”,model.Id);
AppendFormat(@“url:'{0}',”,WebExtensions.GetUrlContent()+model.url);
//htmlBuilder.AppendFormat(@“editurl:”/inwardoutput/Edit“,”);
如果(!string.IsNullOrEmpty(model.EditUrl))
AppendFormat(@“editurl:'{0}',”,WebExtensions.GetUrlContent()+model.editurl);
AppendFormat(@“数据类型:'json',”);
AppendFormat(@“mtype:'POST',高度:280,”);
//创建列名称
AppendFormat(@“colNames:[”);
foreach(model.Actions中的var操作)
{
htmlBuilder.AppendFormat(@“{0}”,action.Name.ToString());
}
foreach(model.Columns中的var列)
{
AppendFormat(@“{0}”,column.Name.ToString());
}
htmlBuilder.AppendFormat(@“,”);
//创建列
AppendFormat(@“colModel:[”);
foreach(model.Columns.OrderBy(x=>x.ActionOrder)中的var列)
{
if(column.Name.ToUpper()=“备注”)
{
htmlBuilder.AppendFormat(@“{{name:'{0}”,
索引:{1},
对齐:“{2}”,
搜索:{3},
可排序:{4},
宽度:{5},
隐藏:{6},
sorttype:“{7}”,
可排序:是的,
搜索选项:{{sopt:[{8}]},
可编辑:{9},
hidedlg:{10},
edittype:“{11}”,
editrules:{{custom:true,custom_func:EditingValidation},
类:“textInDiv”,
格式化程序:函数(v){{return'+$.jgrid.htmlEncode(v)+'';}
,column.Index.ToString()
,column.Index
,column.Align==null?“left”:column.Align.ToLower()
,column.IsSearch.ToString().ToLower()列
,column.IsSortable.ToString().ToLower()
,列宽>0?列宽:100
,column.ishiden.ToString().ToLower()列
,栏
@using Intranet.Common;
@using CSR.UI.Web.Helpers;
@using CSR.Model;
@using Intranet.Utilities;
@model CorpGroupModel
@{
ViewBag.Title = "AddEditCorpGroup";
//Layout = "~/Views/Shared/_Layout.cshtml";
}
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
Manage Corporate Group </h3>
</div>
<div class="panel-body">
<br />
@Html.CreateJQGrid(Model.GridData)
</div>
</div>
<br/>
<div class="panel panel-default">
<div class="panel-heading">
<h3 class="panel-title">
Add / Edit Corporate Group</h3>
</div>
<div class="panel-body">
<div class="icon-list">
@Html.ActionLink("Back to List", "ManageCorpGroup", null, new { @id
= "BackToList", @class = "backbtn" })
</div>
</br>
@using (Html.BeginForm(Constants.Action.AddEditCorpGroup,
Constants.Controller.CorpGroup, FormMethod.Post, new { @role = "form" }))
{
@Html.AntiForgeryToken()
@Html.HiddenFor(m => m.IsAdd)
@Html.HiddenFor(m => m.Id)
@Html.HiddenFor(m => m.CompanyId);
@Html.HiddenFor(m => m.Status);
@Html.HiddenFor(m => m.CreateUser);
@Html.HiddenFor(m => m.CreateDate);
@Html.HiddenFor(m => m.IsUserLoggedIn);
@Html.HiddenFor(m => m.LoggedInUserSeq);
@Html.HiddenFor(m => m.UserAccessRights);
@Html.HiddenFor(m => m.IsMakerRemarks)
@Html.HiddenFor(m => m.IsCheckerRemarks)
<div class="row">
<div class="col-md-4">
<label for="" class="control-label">
Corporate Group Name </label><br />
@Html.TextBoxFor(model => model.CorpGroupName, new { @class
= "form-control mand", @onkeypress = "return OnlyAlphaNumeric(this);",
@onkeyup = "return CPOnlyAlphaNumeric(this);" }).DisableIf(() =>
Model.IsReadOnly == true)
</div>
<div class="col-md-4">
<label for="" class="control-label">
Corporate Group Name </label><br />
@Html.TextBoxFor(model => model.ManagingDirector, new {
@class = "form-control mand", @onkeypress = "return
OnlyAlphaNumeric(this);", @onkeyup = "return CPOnlyAlphaNumeric(this);"
}).DisableIf(() => Model.IsReadOnly == true)
</div>
<div class="col-md-4">
<label for="" class="control-label">
Address1 </label><br />
@Html.TextBoxFor(model => model.Address1, new { @class =
"form-control mand", @onkeypress = "return OnlyAlphaNumeric(this);",
@onkeyup = "return CPOnlyAlphaNumeric(this);" }).DisableIf(() =>
Model.IsReadOnly == true)
</div>
<div class="col-md-4">
<label for="" class="control-label">
Address2 </label><br />
@Html.TextBoxFor(model => model.Address2, new { @class =
"form-control", @onkeypress = "return OnlyAlphaNumeric(this);", @onkeyup =
"return CPOnlyAlphaNumeric(this);" }).DisableIf(() => Model.IsReadOnly ==
true)
</div>
<div class="col-md-4">
<label for="" class="control-label">
Address3 </label><br />
@Html.TextBoxFor(model => model.Address3, new { @class =
"form-control", @onkeypress = "return OnlyAlphaNumeric(this);", @onkeyup =
"return CPOnlyAlphaNumeric(this);" }).DisableIf(() => Model.IsReadOnly ==
true)
</div>
<div class="col-md-4">
<label for="" class="control-label">
Address4 </label><br />
@Html.TextBoxFor(model => model.Address4, new { @class =
"form-control", @onkeypress = "return OnlyAlphaNumeric(this);", @onkeyup =
"return CPOnlyAlphaNumeric(this);" }).DisableIf(() => Model.IsReadOnly ==
true)
</div>
</div>
}
</div>
</div>
<script type="text/javascript">
// Start of Hide Reset button in edit mode
var model = @Html.Raw(Json.Encode(Model))
$(document).ready(function () {
function getDocumentDetails()
{
alert("2");
}
});
</script>