2014-02-12 5 views
-1

안녕하세요, 최근에 면도기 뷰 엔진으로 MVC4에서 작업하기 시작했습니다. 내 데이터 액세스를 위해 Entity Framework 5를 사용하고 있습니다. 사용자 정보를 UI에 표시해야하므로 Flexigrid를 구현했습니다. Codeproject 기사의 도움을 받았지만 이것이 나에게 도움이되지 못합니다. 내 응용 프로그램을 실행하면 평범한 오래된 inbuilt 색인 페이지를 제외하고 아무것도 표시되지 않습니다. 색인 페이지에서만 Flexigrid를 구현하려고합니다. 내가 어떤 비용 그리드 implememnt 필요Flexigrid가 EntityFramework MVC4 면도기와 함께 작동하지 않습니다.

public ActionResult NotificationsList() 
     { 

      var q = from c in db.Tbl_Notification 
        select c; 

      List<Tbl_Notification> notes = q.ToList(); 
      FlexigridObject flexigridObject = new FlexigridObject(); 
      flexigridObject.page = 1; 
      flexigridObject.total = db.Tbl_Notification.Count(); 
      foreach (Tbl_Notification notify in notes) 
      { 
       FlexigridRow cell = new FlexigridRow() 
       { 
        id = notify.NotificationId, 
        cell = GetPropertyList(notify) 
       }; 
       flexigridObject.rows.Add(cell); 
      } 

      return View("FlexigridObject", flexigridObject); 
     } 

     private List<string> GetPropertyList(object obj) 
     { 
      List<string> propertyList = new List<string>(); 

      Type type = obj.GetType(); 
      PropertyInfo[] properties = type.GetProperties(BindingFlags.Instance | BindingFlags.Public); 
      foreach (PropertyInfo property in properties) 
      { 
       object o = property.GetValue(obj, null); 
       propertyList.Add(o == null ? "" : o.ToString()); 
      } 

      return propertyList; 
     } 
    } 
    public static class ExtensionMethods 
    { 
     public static IQueryable<T> OrderBy<T>(this IQueryable<T> source, string propertyName, bool asc) 
     { 
     var type = typeof(T); 
     string methodName = asc ? "OrderBy" : "OrderByDescending"; 
     var property = type.GetProperty(propertyName); 
     var parameter = Expression.Parameter(type, "p"); 
     var propertyAccess = Expression.MakeMemberAccess(parameter, property); 
     var orderByExp = Expression.Lambda(propertyAccess, parameter); 
     MethodCallExpression resultExp = Expression.Call(typeof(Queryable), methodName, new Type[] { type, property.PropertyType }, source.Expression, Expression.Quote(orderByExp)); 
     return source.Provider.CreateQuery<T>(resultExp); 
    } 

    public static IQueryable<T> Like<T>(this IQueryable<T> source, string propertyName, string keyword) 
    { 
     var type = typeof(T); 
     var property = type.GetProperty(propertyName); 
     var parameter = Expression.Parameter(type, "p"); 
     var propertyAccess = Expression.MakeMemberAccess(parameter, property); 
     var constant = Expression.Constant("%" + keyword + "%"); 
     MethodCallExpression methodExp = Expression.Call(null, typeof(SqlMethods).GetMethod("Like", new Type[] { typeof(string), typeof(string) }), propertyAccess, constant); 
     Expression<Func<T, bool>> lambda = Expression.Lambda<Func<T, bool>>(methodExp, parameter); 
     return source.Where(lambda); 
    } 
} 

}

{

<table id="notification" style="display:none"> 
    <script type="text/javascript"> 
     $("#notifications").flexigrid({ 
      url: 'Controllers/Notifications/NotificationsList', 
      dataType: 'json', 
      colModel: [ 
       { display: 'NotificationID', name: 'NotificationID', width: 40, sortable: true, align: 'left' }, 
       { display: 'Notification', name: 'Notification', width: 100, sortable: true, align: 'left' }, 
       { display: 'IsDisplay', name: 'IsDisplay', width: 100, sortable: true, align: 'left' }, 
       { display: 'CreatedBy', name: 'CreatedBy', width: 100, sortable: true, align: 'left' }, 
       { display: 'CreatedOn', name: 'CreatedOn', width: 100, sortable: true, align: 'left' }, 
       { display: 'ModifiedBy', name: 'ModifiedBy', width: 80, sortable: true, align: 'left' }, 
       { display: 'ModifiedOn', name: 'ModifiedOn', width: 60, sortable: true, align: 'left' } 

       ], 
      searchitems: [ 
       { display: 'NotificationID', name: 'NotificationID' }, 
       { display: 'Notification', name: 'Notification' }, 
       { display: 'IsDisplay', name: 'IsDisplay' }, 
       { display: 'CreatedBy', name: 'CreatedBy' }, 
       { display: 'CreatedOn', name: 'CreatedOn' }, 
       { display: 'ModifiedBy', name: 'ModifiedBy' } 
       ], 
      sortname: 'NotificationId', 
      sortorder: 'asc', 
      usepager: true, 
      title: 'Notifications', 
      useRp: true, 
      rp: 15, 
      showTableToggleBtn: true, 
      width: 1040, 
      height: 380 
     }); 
    </script> 
    </table> 
} 

컨트롤러 봐처럼 {처럼 내보기 코드 같은데, 저를 제안 해주십시오. 검도 UI를 무료로 사용할 수있는 날씨를 알려주십시오.

답변

0

flexigrid 스크립트에서 $(document).ready() 함수 호출을 추가하지 못한 것 같습니다. 따라서 브라우저는 귀하의 flexigrid를 전혀 호출하지 않습니다.

이 시도 :

<table id="notification" style="display:none"> 
    <script type="text/javascript"> 
$(document).ready(function() { 
     $("#notifications").flexigrid({ 
      url: 'Controllers/Notifications/NotificationsList', 
      dataType: 'json', 
      colModel: [ 
       { display: 'NotificationID', name: 'NotificationID', width: 40, sortable: true, align: 'left' }, 
       { display: 'Notification', name: 'Notification', width: 100, sortable: true, align: 'left' }, 
       { display: 'IsDisplay', name: 'IsDisplay', width: 100, sortable: true, align: 'left' }, 
       { display: 'CreatedBy', name: 'CreatedBy', width: 100, sortable: true, align: 'left' }, 
       { display: 'CreatedOn', name: 'CreatedOn', width: 100, sortable: true, align: 'left' }, 
       { display: 'ModifiedBy', name: 'ModifiedBy', width: 80, sortable: true, align: 'left' }, 
       { display: 'ModifiedOn', name: 'ModifiedOn', width: 60, sortable: true, align: 'left' } 

       ], 
      searchitems: [ 
       { display: 'NotificationID', name: 'NotificationID' }, 
       { display: 'Notification', name: 'Notification' }, 
       { display: 'IsDisplay', name: 'IsDisplay' }, 
       { display: 'CreatedBy', name: 'CreatedBy' }, 
       { display: 'CreatedOn', name: 'CreatedOn' }, 
       { display: 'ModifiedBy', name: 'ModifiedBy' } 
       ], 
      sortname: 'NotificationId', 
      sortorder: 'asc', 
      usepager: true, 
      title: 'Notifications', 
      useRp: true, 
      rp: 15, 
      showTableToggleBtn: true, 
      width: 1040, 
      height: 380 
     }); 
     }); 
    </script> 
    </table> 

또한,이되지 않을 수도 스크립트가 내부 테이블 레이아웃을 상주해야하는 가장 좋은 아이디어를. 태그 수프를 만듭니다.