! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

FlexGrid sorting > Q&A | 토론

본문 바로가기

ComponentOne

Q&A | 토론

ASP.NET MVC FlexGrid sorting

페이지 정보

작성자 Parkaaaa 작성일 2023-08-24 17:04 조회 337회 댓글 0건
제품 버전 : .NET Framework 4.*
컨트롤 이름 : FlexGrid Sorting

본문

f5dca810823ac62bd500323d688acb07_1692864178_9654.png

솔팅기능을 하기전입니다.

f5dca810823ac62bd500323d688acb07_1692864224_358.png

솔팅기능 후입니다.

안녕하세요 제가 처음에는 바인딩 되지않은 언바운드 그리드로 생성하였다가 ajax통신을 통하여 Controller에서 값을 받은후 그리드에 뿌려주는 식으로 그리드를 재생성하였습니다. 근데 재생성된 그리드는 sorting기능을 사용하면 그리드의 값들이 다 사라지고 헤더만 남는 현상이 발생하는데 어떻게 해야 하나요?  


@(Html.C1().FlexGrid()

    

    .Id("gFlexGrid")

    .AutoGenerateColumns(false)

     .IsReadOnly(false)

     .AutoClipboard(true)

    

    .SelectionMode(C1.Web.Mvc.Grid.SelectionMode.Row)

     .AllowAddNew(false)

    .CssClass("grid")

    .ShowSort(true)

    .AlternatingRowStep(0)

     //.ItemsSourceId("getProductOrders")



     .Columns(bl =>

     {

     bl.Add(cb => cb.Binding("REQD").Header("a").Width("130"));

     bl.Add(cb => cb.Binding("spflag").Header("c").Width("130"));

     bl.Add(cb => cb.Binding("clt").Header("as").Width("130").TemplateFunction("createButton").CssClass("link"));

     bl.Add(cb => cb.Binding("cltn").Header("aas").Width("130"));

     bl.Add(cb => cb.Binding("date").Header("qw").Width("250"));

     bl.Add(cb => cb.Binding("bank").Header("qa").Width("250"));

     bl.Add(cb => cb.Binding("acc").Header("ax").Format("c").Width("250"));

     bl.Add(cb => cb.Binding("cmsr").Header("2").Format("p0").Width("250"));

     bl.Add(cb => cb.Binding("deposit").Header("3").Width("250"));

     bl.Add(cb => cb.Binding("saup").Header("4").Width("250"));

     bl.Add(cb => cb.Binding("zipcd").Header("5").Width("250"));

     bl.Add(cb => cb.Binding("cltadres").Header("6").Width("250"));

     bl.Add(cb => cb.Binding("cltadres2").Header("7").Width("250"));

     bl.Add(cb => cb.Binding("hptelnum").Header("8").Width("250"));

     bl.Add(cb => cb.Binding("gdat").Header("9").Width("250"));

     bl.Add(cb => cb.Binding("confrdate").Header("0").Width("250"));

     bl.Add(cb => cb.Binding("contodate").Header("11").Width("250"));

     bl.Add(cb => cb.Binding("amt").Header("12").Width("250"));

     bl.Add(cb => cb.Binding("agnm").Header("13").Width("250"));

     bl.Add(cb => cb.Binding("agmail").Header("14").Width("250"));

     bl.Add(cb => cb.Binding("grade").Header("16").Width("100").Visible(false));

     bl.Add(cb => cb.Binding("telnum").Header("17").Width("100").Visible(false));

     bl.Add(cb => cb.Binding("hptelnum").Header("18").Width("100").Visible(false));

     bl.Add(cb => cb.Binding("remarks").Header("21").Width("100").Visible(false));

     bl.Add(cb => cb.Binding("auto").Header("22").Width("100").Visible(false));

     bl.Add(cb => cb.Binding("JPNAME").Header("23").Width("100").Visible(false));

     bl.Add(cb => cb.Binding("JPIMG2").Header("24").Width("100").Visible(false));

}).Selector(sb=> sb.ShowCheckAll(true))

)

이런식으로 그리드를 만들고 조회버튼을 누르면 function Load() {

        $.ajax({

            type: "POST",

            url: "/Batch/GetData",

            data: $('form').serialize(),

            dataType: "json",

            success: function (result) {

                 flex = wijmo.Control.getControl("#gFlexGrid"),

                    

                    cv = flex.collectionView;

                console.log("as", flex);

               


                try {

                    cv._isFillingData = true;

                    cv.deferUpdate(function () {

                        cv.sourceCollection.clear();

                        result.forEach(function (item) {

                           @* item.Start = parseDate(item.Start);

                            item.End = parseDate(item.End);*@

                            cv.sourceCollection.push(item);

                        });

                    })


                    //tabA_grid(result);


                } finally {

                    cv._isFillingData = false;

                }

                console.log("success");


            },

            error: function (err) {

                console.log("Err");

            }

        });

    } 클라이언트에서 서버로 요청하여 값을 받은후 push를 통하여 값을 넣어줬습니다. 감사합니다.


혹시 추가로 그리드 선택기(Selector)에서 선택을 하는데 컬럼(spflag)값이 1이면 선택기로 선택이 안되게 하는 그런 기능도 있을까요? 



  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

등록된 댓글이 없습니다.

1 답변

ASP.NET MVC Re: FlexGrid sorting

추천0 이 글을 추천하셨습니다 비추천0

페이지 정보

작성자 GCK싸이먼 작성일 2023-08-28 18:24 댓글 0건

본문

안녕하세요

그레이프시티 입니다.


문의하신 기능을 구현하기 위해서는 CollectionView를 FlexGrid에 선언해야 합니다.

FlexGrid가 바인딩되어 있지 않은 데이터를 표시할 때, FlexGrid에 연결된 CollectionView의 인스턴스가 없어 발생하는 현상으로 보여집니다.


아래의 코드를 참고해주시고, 이후에도 동일한 문제가 발생하시는 경우에는

샘플 프로젝트를 첨부해주시면 확인하여 도움을 드리겠습니다.

$.ajax({
            type: "GET",
            data: {seed : data},
            url: "@Url.Action("GetData", "Home")",
            success: function (result) {
                var grid = wijmo.Control.getControl("#flexgrid");
                cv = grid.collectionView;
                console.log(cv,cv.sourceCollection);
                if (true) {
                    try {
                        cv._isFillingData = true;
                        cv.sourceCollection = [];
                        cv.deferUpdate(function () {
                            result.forEach(function (item) {
                                cv.sourceCollection.push(item);
                            });
                        })
                    } finally {
                        cv._isFillingData = false;
                    }
                } else {
                    //assign CollectionView to FlexGrid
                    grid.itemsSource = new wijmo.collections.CollectionView(result);
                }
                
            },
            error: function (err) {
                alert("Error on loading results.");
            }
        });


추가로 궁금하신 사항은 문의해 주시기 바랍니다.

감사합니다.

그레이프시티 드림.

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.