سؤال

هل هناك طريقة لتعديل قيم حقل الحالة في Colmodel ديناميكيًا؟ دعنا نقول أن لدينا نموذج COL مع حقل مثل:

... field ... name: "state",type: "select",
editoptions: {value: "0:state0;1:state1;2:state2;3:state3;4:state4"}

لذلك أحصل على حقل تحديد لحالتي مع هذه القيم. لكني بحاجة إلى تحديد Dynamicaly أي SelectFields يجب أن تكون ممكنة. إذا كانت حالة الصف الحالي هي State0 ، فيجب عرض State0 و State1 فقط. إذا كانت الدولة 1 ، فيجب أن تكون العرض 0 و State1 و State2 وما إلى ذلك حتى الدولة 4 التي يجب أن تعرض STAE3 و State4 فقط.

هل أنا قادر على حل هذا بتنسيق ، أو هل هناك أي طريقة أخرى للقيام بهذا الشيء.

لجعل الأمر أكثر صعوبة ، دعنا نقول إن الدول التي يتم عرضها عمومًا تعتمد على المستخدم الذي تم تسجيل الدخول ، في طلبي. بطريقة ما ، يمكن للمستخدم فقط رؤية State0 و State2 و State4. يمكن جعل ذلك أكثر تعقيدًا ، مما يسبب الترانزستانيات بين State3 و State4 للمستخدم الحالي.

ومع ذلك ، فإن الدول نفسها هي ديناميكية أيضا. هل سيكون من المفيد إنشاء JavaScript ديناميكيًا لكائن في طلبي ، والذي يمثل فئة حكومية عامة واستخدام هذا الكائن لإنشاء مخرجاتي المطلوبة في التنسيق؟ لذلك يمكنني تغليف المنطق داخل هذا الكائن ، وكيف يتم إنشاء مخرجاتي والإضافة ، أحصل على الدول فقط التي يستطيع المستخدم رؤيتها.

يجب أن تجعلني أقتل عصفورين بحجر واحد.

بعد إعادة القراءة ، آمل أن يكون من الواضح ما أريد القيام به ، إن لم أكن أخبرني وسأشرح ذلك بمزيد من التفاصيل.

حل للمشكلة الملموسة ، thx إلى أوليغ:

    editoptions : {

    value : function(){
        //a function can be called here:
        currentRow=$("#order_items").getGridParam('selrow');
        currentState=$("#order_items").getCell(currentRow,"state");
                    nastyGeneratedThings=function(){
                                     ... do some nasty things with currentState
                                     ... and generate what you want
                                     }
                    return nastyGeneratedThings
    }

واجهت بعض المتاعب ، لأن الوظيفة كانت تسمى مرة واحدة فقط. لذلك لا بد لي من تعيين خيار إعادة إنشاء في NavGrid.

navGrid("#pager", {
            edit : true,
            add : true,
            del : true
        }, {
            height : 500,
            width : 500,
            // recreate the form every time when edit button is clicked.
            // Default is false.
            recreateForm : true
        }
        });

بعد ذلك تطلق وظيفتي في كل مرة انقر فوق تحرير. آمل أن يساعد هذا شخص ما بطريقة أو بأخرى.

هل كانت مفيدة؟

المحلول

ال value خاصية من editoptions لا يمكن أن يكون فقط سلسلة ولكن أيضا وظيفة. يمكن أن تُرجع الوظيفة إما سلسلة مثل "0: state0 ؛ 1: State1 ؛ 2: State2 ؛ 3: State3 ؛ 4: State4" أو كائن مثل {"0":"state0", "1":"state1", "2":"state2", "3":"state3", "4":"state4"}. التنسيق الأخير بالمناسبة له بعض المزايا: يمكنك على سبيل المثال الاستخدام ":" ، "؛" ؛ داخل القيم.

لا تحتوي الوظيفة على معلمات ، ولكن يمكنك الحصول على الصف المحدد الحالي مع COLL مثل getGridParam('selrow') الطريقة ومع getCell(rowid,iCol) أو getCell(rowid,"state") القيمة الحالية لعمود "الحالة".

شاهد المزيد في وصف value الممتلكات على http://www.trirand.com/jqgridwiki/doku.php؟id=wiki:Common_Rules#Editoptions). ربما هذا يمكن أن يحل مشكلتك؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top