public DataTable GetEntityData(string catalogName, string entityName)
{
mdsProxy = CreateMdsProxy("http://192.168.0.111:8888/service/service.svc");var crud = new MDSEntityCRUDOperations(mdsProxy, catalogName, entityName);int skip = 0; int top = 0; string orderBy = string.Empty; string searchTerm = string.Empty; int totalMembers = 0;return crud.GetData(skip, top, orderBy, searchTerm, ref totalMembers);
}Function GetDatapublic DataTable GetData(int skip, int top, string orderBy, string searchTerm, ref int totalMembers,string attributeGroup = null, List<string> attributeList = null)
{List<MetadataAttribute> atts = GetAttributeList(attributeGroup);
var members = GetMembers(skip, top, orderBy, searchTerm, attributeNames, ref totalMembers).ToList();
var dt = ToDataTable(members, atts);
return dt;}
public DataTable ToDataTable(IEnumerable<Member> members, IList<MetadataAttribute> attributes)
{
DataTable t = new DataTable();
foreach (var att in attributes)
{
Type dataType;
if (att.AttributeType == AttributeType.Domain) // should become a lookup column/cell
{
dataType = typeof(string);
}
else if (att.AttributeType == AttributeType.FreeForm)
{
if (att.DataType == AttributeDataType.DateTime)
{
dataType = typeof(DateTime);
}
else if (att.DataType == AttributeDataType.Link)
{
dataType = typeof(string);
}
else if (att.DataType == AttributeDataType.Number)
{
dataType = typeof(decimal);
}
else if (att.DataType == AttributeDataType.Text)
{
dataType = typeof(string);
}
else
{
throw new InvalidOperationException("Attribute DataType not supported" + att.DataType);
}
}
var col = t.Columns.Add(att.Identifier.Name, dataType);
}
t.PrimaryKey = new DataColumn[] { t.Columns["Code"] };
t.BeginLoadData();
var hasCode = t.Columns.Contains("Code");
var hasName = t.Columns.Contains("Name");
foreach (var m in members)
{
var r = t.NewRow();
if (hasCode)
{
r["Code"] = m.MemberId.Code;
}
if (hasName)
{
r["Name"] = m.MemberId.Name;
}
foreach (var att in m.Attributes)
{
var value = att.Value;
if (value == null || (value is string && (string)value == string.Empty))
{
r[att.Identifier.Name] = DBNull.Value;
}
else if (value is MemberIdentifier)
{
r[att.Identifier.Name] = ((MemberIdentifier)value).Code;
}
else
{
r[att.Identifier.Name] = value;
}
}
t.Rows.Add(r);
}
t.EndLoadData();
return t;
}
|
public IActionResult UrlDatasource([FromBody]Data dm)
{
var order = getData();
DataTable dt = DTable();
var Data = order.ToList();
int count = order.Count();
DataSet dataSet = new DataSet("dataSet");
dataSet.Namespace = "NetFramework";
dataSet.Tables.Add(dt);
return Json(new { result = dt, count = 2 }, new JsonSerializerSettings() {
Converters = new List<JsonConverter>() { new Newtonsoft.Json.Converters.Core2.DataTableConverter() }
});
}
public DataTable DTable()
{
DataTable dt = new DataTable();
dt.Columns.AddRange(new DataColumn[4] { new DataColumn("OrderID", typeof(int)),
new DataColumn("CustomerID", typeof(string)),
new DataColumn("Freight", typeof(int)),
new DataColumn("ShipCity", typeof(string))
});
dt.Rows.Add(1, "Ram",22, "Chennai");
dt.Rows.Add(2, "John", 33, "Mumbai");
dt.Rows.Add(3, "Raj", 44, "Delhi");
return dt;
} |
|
<div>
<ejs-grid id="Grid" toolbar="@(new List<string>() { "Add","Edit", "Delete", "Update", "Cancel" })" allowPaging="true" >
<e-datamanager url="/Home/UrlDatasource" adaptor="UrlAdaptor" BatchUrl="/Home/Update"></e-datamanager>
<e-grid-editSettings allowEditing="true" allowAdding="true" allowDeleting="true" mode="Batch" ></e-grid-editSettings>
<e-grid-pagesettings pageCount="5"></e-grid-pagesettings>
<e-grid-columns>
<e-grid-column field="OrderID" headerText="Order ID" isPrimaryKey="true" validationRules="@(new { required=true})" textAlign="Right" width="120"></e-grid-column>
<e-grid-column field="CustomerID" headerText="Customer Name" validationRules="@(new { required=true})" width="150"></e-grid-column>
<e-grid-column field="Freight" headerText="Freight" validationRules="@(new { required=true})" textAlign="Right" editType="numericedit" format="C2" width="120"></e-grid-column>
<e-grid-column field="ShipCity" headerText="Ship City" width="170"></e-grid-column>
</e-grid-columns>
</ejs-grid>
</div> |
|
<div>
<ejs-grid id="Grid" toolbar="@(new List<string>() { "Add","Edit", "Delete", "Update", "Cancel" })" allowPaging="true" >
<e-datamanager url="/Home/UrlDatasource" adaptor="UrlAdaptor" BatchUrl="/Home/Update"></e-datamanager>
<e-grid-editSettings allowEditing="true" allowAdding="true" allowDeleting="true" mode="Batch" ></e-grid-editSettings>
<e-grid-pagesettings pageCount="5"></e-grid-pagesettings>
<e-grid-columns>
<e-grid-column field="OrderID" headerText="Order ID" isPrimaryKey="true" validationRules="@(new { required=true})" textAlign="Right" width="120"></e-grid-column>
<e-grid-column field="CustomerID" headerText="Customer Name" validationRules="@(new { required=true})" width="150"></e-grid-column>
<e-grid-column field="Freight" headerText="Freight" validationRules="@(new { required=true})" textAlign="Right" editType="numericedit" format="C2" width="120"></e-grid-column>
<e-grid-column field="ShipCity" headerText="Ship City" width="170"></e-grid-column>
</e-grid-columns>
</ejs-grid>
</div> |
@model MDS_MVC_Proto2.Models.EntitySelectModel
@{
ViewData["Title"] = "Index";
}
<h2>Select Catalog & Entity</h2>
<div class="form-row">
@* -- Catalog *@
<div class="form-group col-md-3">
<label for="selectCatalog">Select Catalog</label>
@Html.DropDownListFor(m => m.CatalogModel, new SelectList(Model.CatalogModel, "Id", "CatalogVersion"), new { @id = "selectCatalog", @onchange = "javascript:GetEntity(this.value)", @class = "form-control" })
</div>
@* -- Entity *@
<div class="form-group col-md-3">
<label for="selectEntity">Select Entity</label>
<select class="form-control" id="selectEntity" name="selectEntity" onchange="javascript:GetEntityData(selectCatalog.value, this.value)">
<option value="0">Please select a Catalog ...</option>
</select>
</div>
</div>
<div>
<ejs-grid id="entityGrid" allowPaging="true">
</ejs-grid>
</div>
<script language="javascript" type="text/javascript">
function GetEntity(_catalogId) {
var procemessage = "<option value='0'>Please wait...</option>";
$("#selectEntity").html(procemessage).show();
var url = "@Url.Action("GetEntityByCatalog", "DataExplorer")";
$.ajax({
url: url,
data: { catalogId: _catalogId },
cache: false,
type: "POST",
success: function (data) {
var markup = "<option value='0'>Select Entity</option>";
for (var x = 0; x < data.length; x++) {
markup += "<option value=" + data[x].value + ">" + data[x].text + "</option>";
}
$("#selectEntity").html(markup).show();
},
error: function (reponse) {
alert("error : " + reponse);
}
});
}
function GetEntityData(_catalogName, _entityName) {
var url = "@Url.Action("GetEntityData", "DataExplorer")";
$.ajax({
url: url,
data: { catalogName: _catalogName, entityName: _entityName },
cache: false,
type: "POST",
success: function (data) {
...
},
error: function (reponse) {
alert("error : " + reponse);
}
});
}
</script>
What function or Url is executed when the users navigates to a different page using pagination? Do I need to handle this with Javascript as well?
Thanks
Ronald
|
<ejs-grid id="Grid" toolbar="@(new List<string>() { "Add","Edit", "Delete", "Update", "Cancel" })" allowPaging="true" >
<e-datamanager url="/Home/UrlDatasource" adaptor="UrlAdaptor" BatchUrl="/Home/Update"></e-datamanager>
<e-grid-editSettings allowEditing="true" allowAdding="true" allowDeleting="true" mode="Batch" ></e-grid-editSettings>
<e-grid-pagesettings pageCount="5"></e-grid-pagesettings>
</ejs-grid> |
|
<e-datamanager url="/Home/UrlDatasource" adaptor="UrlAdaptor" BatchUrl="/Home/Update"></e-datamanager>
|
|
Parameters |
Description |
|
requiresCounts |
If it is true then the total count of records will included in response. |
|
skip |
It holds the number of records to skip. |
|
take |
It holds the number of records to take. |
|
sorted |
It contains details of current sorted column and its direction. |
|
table |
It defines data source table name. |
|
where |
It contains details of current filter column name and its constraints. |
|
<div>
<ejs-grid id="Grid" toolbar="@(new List<string>() { "Add","Edit", "Delete", "Update", "Cancel" })" allowPaging="true">
<e-datamanager url="/Home/UrlDatasource" adaptor="UrlAdaptor" BatchUrl="/Home/Update"></e-datamanager>
<e-grid-editSettings allowEditing="true" allowAdding="true" allowDeleting="true" mode="Batch"></e-grid-editSettings>
<e-grid-pagesettings pageCount="5"></e-grid-pagesettings>
</ejs-grid>
<ejs-scripts></ejs-scripts>
</div>
|
|
public IActionResult GridViewPartial()
{
return PartialView("GridViewPartial");
} |
|
<div>
<ejs-grid id="Grid" toolbar="@(new List<string>() { "Add","Edit", "Delete", "Update", "Cancel" })" allowPaging="true" columns="@ViewData["columns"]">
<e-datamanager url="/Home/UrlDatasource" adaptor="UrlAdaptor" BatchUrl="/Home/Update"></e-datamanager>
<e-grid-editSettings allowEditing="true" allowAdding="true" allowDeleting="true" mode="Batch"></e-grid-editSettings>
<e-grid-pagesettings pageCount="5"></e-grid-pagesettings>
</ejs-grid>
<ejs-scripts></ejs-scripts>
</div> |
|
public IActionResult GridViewPartial()
{
ViewData["columns"] = new List<Syncfusion.EJ2.Grids.GridColumn>() {
new Syncfusion.EJ2.Grids.GridColumn() { Field = "OrderID" },
new Syncfusion.EJ2.Grids.GridColumn() { Field = "CustomerID" }
};
return PartialView("GridViewPartial", ViewData);
} |
|
public IActionResult UrlDatasource([FromBody]ExtendedDataManagerRequest dm)
{
var order = getData();
DataTable dt = DTable();
var Data = order.ToList();
int count = order.Count();
DataSet dataSet = new DataSet("dataSet");
dataSet.Namespace = "NetFramework";
dataSet.Tables.Add(dt);
return Json(new { result = dt, count = 2 }, new JsonSerializerSettings() {
Converters = new List<JsonConverter>() { new Newtonsoft.Json.Converters.Core2.DataTableConverter() }
});
} |
|
public class ExtendedDataManagerRequest: DataManagerRequest
{
public int id { get; set; }
// place name same as parameter name
} |
|
public IActionResult UrlDatasource([FromBody]ExtendedDataManagerRequest dm)
{
var order = getData();
DataTable dt = DTable();
var Data = order.ToList();
int count = order.Count();
DataSet dataSet = new DataSet("dataSet");
dataSet.Namespace = "NetFramework";
dataSet.Tables.Add(dt);
return Json(new { result = dt, count = 2 }, new JsonSerializerSettings() {
Converters = new List<JsonConverter>() { new Newtonsoft.Json.Converters.Core2.DataTableConverter() }
});
}
|
|
public class ExtendedDataManagerRequest: DataManagerRequest
{
. . .
public int catalogGuid { get; set; }
public int entityGuid { get; set; }
}
// get data from url
public IActionResult UrlDatasource([FromBody]ExtendedDataManagerRequest dm) {
. . .
});
}
|
|
<script type="text/javascript">
function actionBegin(args) {
this.query.params = [];
this.query.addParams('catalogGuid', '@ViewData["newcatalogGuid"]');
this.query.addParams('entityGuid', '@ViewData["newentityGuid"]');
}
</script>
<div>
<ejs-grid id="Grid" actionBegin="actionBegin" query="new ej.data.Query().addParams('catalogGuid', @ViewData["catalogGuid"]).addParams('entityGuid', @ViewData["entityGuid"])" allowSorting="true" toolbar="@(new List<string>() { "Add","Edit", "Delete", "Update", "Cancel" })" allowPaging="true" columns="@ViewData["columns"]">
<e-data-manager url="/Home/UrlDatasource" adaptor="UrlAdaptor" BatchUrl="/Home/Update"></e-data-manager>
<e-grid-editSettings allowEditing="true" allowAdding="true" allowDeleting="true" mode="Batch"></e-grid-editSettings>
<e-grid-pagesettings pageCount="5"></e-grid-pagesettings>
</ejs-grid>
<ejs-scripts></ejs-scripts>
</div>
|
|
<div>
<ejs-grid id="Grid" actionBegin="actionBegin" query="new ej.data.Query().addParams('catalogGuid', @ViewData["catalogGuid"]).addParams('entityGuid', @ViewData["entityGuid"])" allowSorting="true" toolbar="@(new List<string>() { "Add","Edit", "Delete", "Update", "Cancel" })" allowPaging="true" columns="@ViewData["columns"]">
<e-data-manager url="/Home/UrlDatasource" adaptor="UrlAdaptor" BatchUrl="/Home/Update"></e-data-manager>
<e-grid-editSettings allowEditing="true" allowAdding="true" allowDeleting="true" mode="Batch"></e-grid-editSettings>
<e-grid-pagesettings pageCount="5"></e-grid-pagesettings>
</ejs-grid>
<ejs-scripts></ejs-scripts>
</div>
|
|
<script type="text/javascript">
function actionBegin(args) {
this.query.params = [];
this.query.addParams('catalogGuid', '@ViewData["newcatalogGuid"]');
this.query.addParams('entityGuid', '@ViewData["newentityGuid"]');
}
</script>
|
|
<script type="text/javascript">
function actionBegin(args) {
function actionBegin(args) {
this.query.params = [];
this.query.addParams('catalogGuid', '@ViewData["newcatalogGuid"]');
this.query.addParams('entityGuid', '@ViewData["newentityGuid"]');
}
}
</script>
|