سؤال

ولقد تم العمل مع البرنامج المساعد jqGrid ممتازة، ويعمل كبيرة. على الرغم مؤخرا، طلب مني لتنفيذ بعض تلميحات مخصصة للشبكة. الآن، و الوثائق هو دقيق جدا، ولكنه لا يتناول كيف (إذا كان هو ممكن) على الإطلاق لتحقيق ذلك.

وهنا مثال على ما أنا أبحث عن:

و| العمود A | عمود B | ...
| بيانات | البيانات | ...
| (تحوم الماوس) - x البيانات

ولقد بحثت من خلال وثائق ومصدر لكيفية / حيث لتحديد تلميحات لكن الأقرب لقد حصلت هي تلميحات مخصصة للأزرار في وضع التحرير. لدي معالج حدث للحدث afterInsertRow - من خلال أن أتمكن من الحصول على ROWID وكذا، ولكن لست متأكدا من كيفية تحديد سمات HTML في هذا الحدث

.

وتحرير: لتوضيح، أود أن تعيين سمة عنوان في خلية واحدة إلى قطعة معينة من البيانات (التي لدي بالفعل في النموذج jqgrid)

وتحرير 2: لقد حاولت إدراج التالية إلى الحدث afterInsertRow، مع عدم وجود الفرح، حيث ADATA هو النموذج JSON، وEXPIRATIONDATE هو اسم النموذج:

afterInsertRow: function(rowid, aData) {
                grid.setCell(rowid, 'ExpirationDate', '', { title: aData.ExpiredBy });

والتعليمات البرمجية التالية في نفس معالج الأحداث يعمل، ولكن:

grid.setCell(rowid, 'ExpirationDate', '', { color: 'red' });

وتحرير 3: العمل مع إقتراحات redsquare الممتازة، لقد قرر أن يتم تعيين السمة اللقب في وقت <م> بعد الحدث afterInsertRow: لقد خرج من وقرر أن يتم تعيينها بشكل صحيح من قبل إما الطريقة الموضحة في التعليقات، ولكن للأسف، وأحصل على كود المصدر غير متوفر لهذا الموقع عند محاولة خطوة أخرى، وهذا يعني أنني لا يمكن أن نرى بالضبط حيث يتم تغيير العنوان.

وتحرير 4: (! شكرا لصبركم ومساعدتي في العمل من خلال هذا) أخذ مرة أخرى تعليق redsquare حول محاكمة الحدث loadComplete، وكنت قادرا على الحصول على بنجاح وتعديل سمات الخلية، ولكن العنوان السمة بعناد لا يزال هو نفسه:

loadComplete: function() {
                var ids = grid.getDataIDs();
                for (var i = 0; i < ids.length; i++) {
                    grid.setCell(ids[i], 'ExpirationDate', '', { title: 'FOO!'});
                }

والتعديل النهائي: يرجى الاطلاع على جوابي أدناه - وكنت قادرا على العثور على السبب الجذري لهذه المسألة، مع مساعدة من redsquare

وأي مساعدة سيكون موضع تقدير

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

المحلول

وطيب، ولقد وجدت المشكلة بعد القيام ببعض تفتيش بالقرب من الخصائص التي يجري وضعها. وتبين أن الأول، مفصل الرأس أنني، لم يقرأ وثائق grid.setCell (...) طريقة ارتباطا وثيقا بما فيه الكفاية:

<اقتباس فقرة>   

وهذه الطريقة يمكن تغيير محتوى   خلية معينة ويمكن أن يحدد فئة أو   خصائص الاسلوب. حيث: • ROWID: ل   معرف الصف،

     

و• colname: اسم العمود (هذا   يمكن أن تكون المعلمة عددا بداية   من 0)

     

و• البيانات: المحتوى الذي يمكن وضعها   في الخلية. إذا سلسلة فارغة   لن يتم تغيير محتوى

     

و• الدرجة: إذا الطبقة هي سلسلة ثم نضيف   فئة إلى الخلية باستخدام addClass. إذا   الطبقة ومجموعة وضعنا المغلق جديد   خصائص عبر المغلق

     

و• الخصائص: تحدد السمة   الخواص الخلية

     

مثال:

     

وsetCell ( "10"، "ضريبة"، ''،   {لون: 'الحمراء'، 'مواءمة النصوص': 'مركز'}، {عنوان: "المبيعات   الضرائب '})

     

وسيتم تعيين محتويات الحقل الضريبي   في الصف 10 إلى الأحمر، وتركزت و   تغيير العنوان إلى "ضريبة المبيعات".

وباختصار، كانت الحجج كنت مارا في طريقة إعداد خصائص المغلق (وسيطة 4TH) بدلا من سمات (وسيطة 5TH). وكانت النتيجة أن اثنين من سمات عنوان أضيفت، على أن يكون أحدهما منسقة بشكل غير صحيح. ويظهر تحت الاحتجاج الصحيح من طريقة لإنجاز ما كنت أحاول القيام به:

grid.setCell(rowid, 'ExpirationDate', '', '',{ title: aData.ExpiredBy});

وشكرا مرة أخرى لredsquare لله / لها المساعدة في حل هذه!

نصائح أخرى

ما المعلومات أن تلميح الأدوات يكون عرض؟ لنفترض المعلومات تلميح الأدوات هي ربما داخل الخلية الأولى (مخفية) في الصف. هل يمكن أن تستهدف أي صف داخل الشبكة وباستخدام أسلوب .live لديك أية صفوف جديدة غطت.

$('#gridId>tbody>tr').live('mouseover', showTip)
                     .live('mouseoff', hideTip);

function showTip(){

   var $row = $(this);
   //get tooltip from first hidden cell
   var tipText = $row.children(':eq(0)').text()
   //append tipText to tooltip and show

}


function hideTip(){

    //hide tip

}

وطيب بعد وضوح قد تتمكن من محاولة هذا. يفترض أن الخلية التي تريد تغيير هي الرابعة في كل صف ويحدد عنوان الخلية إلى النص الحالي في تلك الخلية. تغيير حسب الحاجة.

وN.B الشبكة يكسر فعلا المعايير باستخدام معرف صحيح لالصفوف. ومع ذلك ما يلي: يجب أن لا تزال تعمل.

$("#gridId").jqGrid({
     ...,
     afterInsertRow : setCellTitle,
     ...
});



function setCellTitle(rowid){
  //get fourth cell in row
  var $cell = $(rowid).children(':eq(3)');
  //set title attribute
  $cell.attr('title', $cell.text());

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