This is a migrated thread and some comments may be shown as answers.

[Solved] Telerik MVC grid Partial dynamic columns

0 Answers 58 Views
Grid
This is a migrated thread and some comments may be shown as answers.
This question is locked. New answers and comments are not allowed.
Shubhankar
Top achievements
Rank 1
Shubhankar asked on 26 Jul 2011, 10:12 AM
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

Tags
Grid
Asked by
Shubhankar
Top achievements
Rank 1
Share this question
or