This question is locked. New answers and comments are not allowed.
Hi
We are currently evaluating Telerik MVC grid for our organization. I am creating a sample implementation for demo. The problem I am facing is the dynamic generation of columns in Razor view. I am dynamically generating properties for my model and trying to bind it to the grid in razor view.
View:
.Columns(columns =>
{
columns.Bound(c => c.UserFirstName).Width("10%").Title("User F Name");
columns.Bound(c => c.UserLastName).Width("10%").Title("User L Name");
columns.Bound(c => c.AuthorizerEmail).Width("10%").Title("Authorizer Email");
columns.Bound(c => c.CreateDate).Width("10%");
columns.Bound(c => c.ApprovedDate).Width("10%");
columns.Bound(c => c.FormGuid).Hidden(true);
var dynamicProperties = Model.DynamicProperties;
var model = Model.ListRequestor;
columns.Template(c => c.GetValue<string>("DynamicColumn1")).Title("DynamicColumn1");
columns.Template(c => c.GetValue<string>("DynamicColumn2")).Title("DynamicColumn2");
columns.Template(c => c.GetValue<string>("DynamicColumn3")).Title("DynamicColumn3");
})
When I write the statements columns.Template(c => c.GetValue<string>("DynamicColumn1")).Title("DynamicColumn1"); it works perfectly but if I use the loop listed below the logic repeats the first columns for the number of times it enters the loop.
foreach (var properties in dynamicProperties)
{
columns.Template(c => c.GetValue<string>(properties)).Title(properties);
}
Model :
public class RequestListService : IRequestListService
{
public ListRequestVM GetAllForms()
{
ListRequestVM listRequestVM = new ListRequestVM();
RequestorListVM requestorListVM = new RequestorListVM();
List<string> dynamicProperties = new List<string>() { "DynamicColumn1", "DynamicColumn2", "DynamicColumn3" };
string[] propertyValues1 = { "3.5", "7.1", "3.8", "9.2", "6.8", "5.5" };
//string[] propertyValues2 = {"9.2", "6.8", "5.5"};
//initialize lists
List<RequestorListVM> requestorListVMList = new List<RequestorListVM>();
int counter = 0;
for (int i = 0; i < 2; i++)
{
var requestList = new RequestorListVM();
requestList.FormId = 0;
requestList.RequestorFirstName = "Peter";
requestList.RequestorLastName = "Pan";
requestList.RequestorNetworkId = "peterp@test.org";
Guid formGuid = System.Guid.NewGuid();
requestList.FormGuid = formGuid;
requestList.UserFirstName = "Lyndon";
requestList.UserLastName = "Johnson";
requestList.UserNetworkId = "johnsonL";
requestList.AuthorizerEmail = "authorizer@test.org";
requestList.ApprovedDate = DateTime.Now;
requestList.CreateDate = DateTime.Now;
for (int j = 1; j < 4; j++)
{
requestList.AddProperty("DynamicColumn" + j.ToString(),
new SimpleProperty<String>(propertyValues1[counter]));
counter++;
}
requestorListVMList.Add(requestList);
}
listRequestVM.ListRequestor = requestorListVMList;
listRequestVM.DynamicProperties = dynamicProperties;
return listRequestVM;
}
Can you please suggest some solution for the problem.
Thanks & Regards
Shubhanakar
We are currently evaluating Telerik MVC grid for our organization. I am creating a sample implementation for demo. The problem I am facing is the dynamic generation of columns in Razor view. I am dynamically generating properties for my model and trying to bind it to the grid in razor view.
View:
.Columns(columns =>
{
columns.Bound(c => c.UserFirstName).Width("10%").Title("User F Name");
columns.Bound(c => c.UserLastName).Width("10%").Title("User L Name");
columns.Bound(c => c.AuthorizerEmail).Width("10%").Title("Authorizer Email");
columns.Bound(c => c.CreateDate).Width("10%");
columns.Bound(c => c.ApprovedDate).Width("10%");
columns.Bound(c => c.FormGuid).Hidden(true);
var dynamicProperties = Model.DynamicProperties;
var model = Model.ListRequestor;
columns.Template(c => c.GetValue<string>("DynamicColumn1")).Title("DynamicColumn1");
columns.Template(c => c.GetValue<string>("DynamicColumn2")).Title("DynamicColumn2");
columns.Template(c => c.GetValue<string>("DynamicColumn3")).Title("DynamicColumn3");
})
When I write the statements columns.Template(c => c.GetValue<string>("DynamicColumn1")).Title("DynamicColumn1"); it works perfectly but if I use the loop listed below the logic repeats the first columns for the number of times it enters the loop.
foreach (var properties in dynamicProperties)
{
columns.Template(c => c.GetValue<string>(properties)).Title(properties);
}
Model :
public class RequestListService : IRequestListService
{
public ListRequestVM GetAllForms()
{
ListRequestVM listRequestVM = new ListRequestVM();
RequestorListVM requestorListVM = new RequestorListVM();
List<string> dynamicProperties = new List<string>() { "DynamicColumn1", "DynamicColumn2", "DynamicColumn3" };
string[] propertyValues1 = { "3.5", "7.1", "3.8", "9.2", "6.8", "5.5" };
//string[] propertyValues2 = {"9.2", "6.8", "5.5"};
//initialize lists
List<RequestorListVM> requestorListVMList = new List<RequestorListVM>();
int counter = 0;
for (int i = 0; i < 2; i++)
{
var requestList = new RequestorListVM();
requestList.FormId = 0;
requestList.RequestorFirstName = "Peter";
requestList.RequestorLastName = "Pan";
requestList.RequestorNetworkId = "peterp@test.org";
Guid formGuid = System.Guid.NewGuid();
requestList.FormGuid = formGuid;
requestList.UserFirstName = "Lyndon";
requestList.UserLastName = "Johnson";
requestList.UserNetworkId = "johnsonL";
requestList.AuthorizerEmail = "authorizer@test.org";
requestList.ApprovedDate = DateTime.Now;
requestList.CreateDate = DateTime.Now;
for (int j = 1; j < 4; j++)
{
requestList.AddProperty("DynamicColumn" + j.ToString(),
new SimpleProperty<String>(propertyValues1[counter]));
counter++;
}
requestorListVMList.Add(requestList);
}
listRequestVM.ListRequestor = requestorListVMList;
listRequestVM.DynamicProperties = dynamicProperties;
return listRequestVM;
}
Can you please suggest some solution for the problem.
Thanks & Regards
Shubhanakar