public KPGridJsonProperties(bool isSearch, int page, int rows, string propertyOrder, string orderTypeJason, string filterJson, KPSessionJQGrid sessionJQGrid, string propertyCompany, ICriterion initialFilter, Order initialOrder, object[] colModel) { IsSearch = isSearch; Page = page; Rows = rows; PropertyOrder = propertyOrder; OrderTypeJson = orderTypeJason; User = sessionJQGrid.SecuritySession.Login; Company = sessionJQGrid.SecuritySession.FrwCompany; PropertyCompanyEntity = propertyCompany; FilterJson = filterJson; ColModel = Array.ConvertAll<object, string>(colModel, Convert.ToString); List<JqGridColumnCustom> jqGridColumnCustomList = new List<JqGridColumnCustom>(); foreach (string item in ColModel) jqGridColumnCustomList.Add(KPJsonJqGrid.GetColumnCustom(item)); ColumnsCustom = jqGridColumnCustomList.ToArray(); InitialFilter = initialFilter; InitialOrder = initialOrder; }
public string Build(string pagerID, string tableID, KPPageBase page) { StringBuilder sbColNames = new StringBuilder(); StringBuilder sbColModel = new StringBuilder(); StringBuilder sbSortName = new StringBuilder(); sbSortName.Append(this.PrimaryKey); string fieldNameTryException = null; try { foreach (KPItemModel item in KPItemsModel) { fieldNameTryException = item.FieldName; #region Create Display Name if (sbColNames.Length != 0) sbColNames.Append(", "); if (!String.IsNullOrEmpty(item.HeaderName)) sbColNames.AppendFormat("'{0}'", item.HeaderName); else { DisplayNameAttribute[] displayName = TypeEntity.GetProperty(item.FieldName).GetCustomAttributes(typeof(DisplayNameAttribute), false) as DisplayNameAttribute[]; if (displayName.Length > 0) sbColNames.AppendFormat("'{0}'", displayName[0].DisplayName); else sbColNames.AppendFormat("'{0}'", item.FieldName); } #endregion #region Create colModels if (sbColModel.Length != 0) { sbColModel.AppendFormat(",{0}", Environment.NewLine); } sbColModel.Append("{"); if (item is KPEntityModel) { sbColModel.AppendFormat(" name: '{0}.{1}', index: '{0}', ", item.FieldName, ((KPEntityModel)item).FieldNameDescription); } else if (item is KPEnumModel) { Type typeEnum = KPGenericUtil.GetTypeByNamespace(((KPEnumModel)item).NamespaceEnum); string itemsComboBoxSearch = this.GetEnumeratorsSearchJqGrid(typeEnum); sbColModel.AppendFormat(" name: '{0}_{1}', index: '{0}', formatter:'select', stype: 'select', ", item.FieldName, ((KPEnumModel)item).NamespaceEnum); sbColModel.AppendFormat("edittype:'select', editoptions: {{ value: '{0}' }}, ", itemsComboBoxSearch); sbColModel.AppendFormat("searchoptions:{{ sopt:['eq'], value: '{0}' }}, ", itemsComboBoxSearch); } else if (item is KPBooleanModel) { KPBooleanModel itemBoolean = item as KPBooleanModel; string itemsComboBoxSearch = this.GetBooleanSearchJqGrid(itemBoolean.CustomTrue, itemBoolean.CustomFalse); sbColModel.AppendFormat(" name: '{0}', index: '{0}', formatter:'select', stype: 'select', ", item.FieldName); sbColModel.AppendFormat("edittype:'select', editoptions: {{ value: '{0}' }}, ", itemsComboBoxSearch); sbColModel.AppendFormat("searchoptions:{{ sopt:['eq'], value: '{0}' }}, ", itemsComboBoxSearch); } else { if (!item.FieldName.Equals(PrimaryKey)) sbColModel.AppendFormat(" name: '{0}', index: '{0}', ", item.FieldName); } if (item.FieldName.Equals(PrimaryKey)) sbColModel.AppendFormat(" name: '{0}', index: '{0}', key: true, ", item.FieldName); sbColModel.AppendFormat("width: '{0}', sortable: '{1}', editable: '{2}', hidden: {3} ", item.Width, item.Sortable.ToString().ToLower(), item.Editable.ToString().ToLower(), (!item.Visible).ToString().ToLower()); if (item is KPItemTextModel) { var itemText = item as KPItemTextModel; if (!itemText.Mask.Equals(KPMaskTypeClassEnum.ALPHANUMERIC)) { sbColModel.Append(@",cellattr: function(rowId, val, rawObject) { return "" class='" + itemText.Mask.GetTypeValue() + @"'""; }"); } } sbColModel.Append("}"); #endregion } } catch (Exception ex) { throw new Exception(String.Format("Ocorreu um erro com o Campo: {0}. Verifica se a propriedade está de acordo com a Entidade {1}.", fieldNameTryException, this.TypeEntity), ex); } //Artigo interessante: //http://www.codeproject.com/Articles/58357/Using-jqGrid-s-search-toolbar-with-multiple-filter //Verifica posição da tela Find //http://www.ok-soft-gmbh.com/jqGrid/multisearchfilter.htm //http://trirand.com/blog/jqgrid/jqgrid.html KPSessionJQGrid sessionJQGrid = new KPSessionJQGrid() { SecuritySession = page.SecuritySession, TypeEntity = TypeEntity, SessionPageID = page.SessionPageID, MasterDetailID = MasterDetailID }; string sessionUser = String.Empty; if (sessionJQGrid != null) { sessionUser = Convert.ToBase64String(SerializerHelper.SerializationObj(sessionJQGrid)); } string propertyCompanyCrypt = String.Empty; if (!String.IsNullOrEmpty(PropertyCompanyEntity)) { propertyCompanyCrypt = KPCryptography.EncryptStringAES(PropertyCompanyEntity); } string initialFilter = String.Empty; if (InitialFilter != null) { initialFilter = Convert.ToBase64String(SerializerHelper.SerializationObj(InitialFilter)); } string initialOrder = String.Empty; if (InitialOrder != null) { initialOrder = Convert.ToBase64String(SerializerHelper.SerializationObj(InitialOrder)); } StringBuilder buildGrid = new StringBuilder(); buildGrid.Append( @"<script type=""text/javascript""> function GetcolModels() { var colModels = new Array(); var colModelsObj = $('#" + tableID + @"').jqGrid('getGridParam', 'colModel'); for (i=0;i<colModelsObj.length;i++) {colModels[i] = colModelsObj[i].name;} return colModels; } function successFunction(jsondata, stat) { var thegrid = jQuery('#" + tableID + @"')[0]; thegrid.addJSONData(JSON.parse(jsondata.d)); setLoading(false); } function errorFunction(jsondata, stat) { alertBox('Ops! Algum problema aconteceu com nosso servidor, por favor feche a tela e abra novamente.'); setLoading(false); } function getGridData(pdata) { setLoading(true); $('#" + HiddenKey.ClientID + @"').val(null); var params = new Object(); params.page = pdata.page; params.rows = pdata.rows; params.sidx = pdata.sidx; params.sord = pdata.sord; params._search = pdata._search; if (pdata.searchField != 'undefined') params.searchField = pdata.searchField; if (pdata.searchOper != 'undefined') params.searchOper = pdata.searchOper; if (pdata.searchString != 'undefined') params.searchString = pdata.searchString; if (pdata.filters != 'undefined') params.filters = pdata.filters; params.colModel = GetcolModels(); params.user = '******'; params.propertyCompany = '" + propertyCompanyCrypt + @"'; params.initialFilter = '" + initialFilter + @"'; params.initialOrder = '" + initialOrder + @"'; $.ajax( { url: '" + UrlService + @"', data: JSON.stringify(params), dataType: 'json', type: 'POST', contentType: 'application/json; charset=utf-8', success: successFunction, error: errorFunction }); } var lastSel; function loadGrid" + tableID + @"(){ $('#" + tableID + @"').jqGrid({ datatype: function (pdata) {getGridData(pdata);}, mtype : 'POST', height: " + Height + @", width: " + Width + @", colNames: [" + sbColNames.ToString() + @"], colModel: [" + sbColModel.ToString() + @"], rowNum: " + RowNum.GetTypeValue() + @", rowList: [" + GetRowList() + @"], pager: '#" + pagerID + @"', sortname: '" + sbSortName.ToString() + @"', viewrecords: " + ViewTotalRecordsLabel.ToString().ToLower() + @", sortorder: '" + OrderRecords.ToString().ToLower() + @"', caption: '" + Caption + @"', gridComplete: function() { generateMaskValidators(); }, onSelectRow: function(rowId) { if(rowId && rowId!==lastSel) { jQuery(this).restoreRow(lastSel); lastSel=rowId; } $('#" + HiddenKey.ClientID + @"').val(rowId); }, ondblClickRow: function(rowId) { $('#" + HiddenKey.ClientID + @"').val(rowId); $('" + DoubleClickAction.GetTypeValue() + @"').click(); }, }); $('#" + tableID + @"').jqGrid('navGrid', '#" + pagerID + @"', { edit: false, add: false, del: false, search: true },{},{},{}, { sopt:[" + this.JqGridSortType() + @"], groupOps: [ { op: 'AND', text: 'E' }, { op: 'OR', text: 'OU' } ], multipleSearch: true, showQuery: false, searchOnEnter: true, closeOnEscape: false, Reset: 'Limpar filtros' } ); $('#" + tableID + @"').jqGrid('filterToolbar',{stringResult: true, searchOnEnter: true}); $(window).bind('resize', function () {"); if (string.IsNullOrWhiteSpace(this.MasterDetailID)) { buildGrid.Append(@" $('#" + tableID + @"').jqGrid('setGridWidth', ($('#" + tableID + @"').closest('.Content').width()-2)); $('#" + tableID + @"').jqGrid('setGridHeight', ($('#" + tableID + @"').closest('.Content').height()-114));"); } else { buildGrid.Append(@" $('#" + tableID + @"').jqGrid('setGridWidth', ($('#" + tableID + @"').closest('.KPMasterDetailField').width()-2)); $('#" + tableID + @"').jqGrid('setGridHeight', ($('#" + tableID + @"').closest('.KPMasterDetailField').height()-105));"); } buildGrid.Append(@" }).trigger('resize'); } $(function () { loadGrid" + tableID + @"(); var updatePanel = Sys.WebForms.PageRequestManager.getInstance(); updatePanel.add_pageLoaded(loadGrid" + tableID + @"); }); </script>"); return buildGrid.ToString(); /* // Verificar o problema no Grid de sumir ao clicar em salvar // Sys.WebForms.PageRequestManager.getInstance().add_endRequest(function(){alert('teste');}); */ }