سؤال

أنا أستخدم البرنامج المساعد TILLICLTARDER لفرز جداولي في تطبيق MVC .NET. معظم أعمالي هي سلاسل ولا أواجه أي مشاكل معهم. لا مع تلك الرقمية. الشيء هو أعمدة DateTime الخاصة بي يتم أيضا فرزها كما لو كانت سلاسل. يتم فرزها مثل هذا: 01/04/2009، 02/02/2009، 03/08/2009، إلخ. أحصل على البيانات من النموذج في هذا العرض.

مكالمتي هي الافتراضي واحد:

$("#table").tablesorter();

حاولت تحديد dateformat دون حظ:

$("#table").tablesorter({
            dateFormat: 'dd/mm/yyyy'});

يحدث الشيء الغريب عندما اكتب طاولة ثابتة يدويا مع تواريخ عشوائية. يتم فرزها! لكن بياناتي تأتي من مكالمة ديسيبل ويتم وضعها في النموذج، ثم Itreate ثم اكتب TR مع البيانات.

شكرا مقدما.

تحرير: هل يمكن أن يكون هناك شيء متعلق بالطريقة التي أقوم بها TR؟

<% foreach (var item in Model) { %>
<tr>
<td>
<%= Html.Encode(item.date) %>
</td>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
<% } %>
هل كانت مفيدة؟

المحلول

حاول إضافة محلل tablearter إلى عمود التاريخ الخاص بك. يأتي TILLILLARDER مع محلل من أجل SHORTDATE و USLONGDATE و ISODATE.

$("#table").tablesorter({
    headers: { colNum: { sorter: 'shortDate'} }
});

حيث colnum هو العمود مع التواريخ. المثال الوحيد الذي يمكنني العثور عليه على موقع TableSter هنا. وبعد هذا يعمل أيضا إذا كان TILLEATARD أكبر أرقام خطأ أيضا. هناك محلل آخرون أيضا في المئة، وعنوان IP وأكثر من ذلك. إلقاء نظرة بالقرب من نهاية التعليمات البرمجية المصدر وسيتم إدراجها هناك.

يحرر:عند النظر إلى التعليمات البرمجية المصدر، يبدو أن خيار DateFormat يبحث فقط عن "الولايات المتحدة"، "المملكة المتحدة"، "DD / MM / YY" أو "DD-MM-YY". ماذا يحدث عند محاولة "المملكة المتحدة"؟

نصائح أخرى

حصلت على نفس المشكلة، وأضفت محلل مخصص يسمى DateTime:

$.tablesorter.addParser({
    id: "datetime",
    is: function(s) {
        return false; 
    },
    format: function(s,table) {
        s = s.replace(/\-/g,"/");
        s = s.replace(/(\d{1,2})[\/\-](\d{1,2})[\/\-](\d{4})/, "$3/$2/$1");
        return $.tablesorter.formatFloat(new Date(s).getTime());
    },
    type: "numeric"
});

ثم تحتاج فقط إلى تطبيق هذا التنسيق إلى الأعمدة التي تريدها، حيث تعرض Gabe G مكشوف (على سبيل المثال لتعيين هذا فارز إلى العمود الأول، يجب عليك القيام بما يلي:

$("#mytable").tablesorter( 
    {   dateFormat: 'dd/mm/yyyy', 
        headers: 
            {
                0:{sorter:'datetime'}
            } 
    } ); 

يمكنك أيضا إضافة علامة تمتدية مخفية قبل تاريخك في تنسيق رقمي (YYYYMMDD). سيأتي هذا النص أولا ويستخدم للفرز ولكن سيتم إخفاءه عن الأنظار وإظهار التنسيق الذي تريده فقط.

    <td><span style="display:none">20130923</span>23 September 2013</td>    

هناك تحديث للحصول على البرنامج المساعد JQuery Tollerwer.

وفقا لمحللي طلبك، يمكنك فرز التواريخ حسب هذا التحديث.

يمكنك عرض تحديث TIXLOWER من خلال اتباع الرابط أدناه.

http://tablesorter.openwerk.de/

طريقة استخدام أسهل:

dateFormat:'mm/dd/yyyy hh:mm:ss'

أن نكون صادقين أبسط حل بالنسبة لي كان، كما قالت Compsmart، مضيفا بعض النص المخفي أمام التاريخ الفعلي.

  • DateFormat: "المملكة المتحدة" لم يكن يعمل بالنسبة لي، ربما لأن تنسيق تاريخي مختلف مرة أخرى
  • http://tablesorter.openwerk.de/ ينطوي على تعديل CSS، أولا أنا لا أفهم السبب والثاني، الجهد أكبر من مجرد إضافة نص مخفي أمام التاريخ.

أنا أحب محلول قبلة من compsmart!

http://mottie.github.io/tablester/docs/

اضبط تنسيق التاريخ. فيما يلي الخيارات المتاحة. (تعديل v2.0.23).

  • "mmddyyyy" (افتراضي)
  • "ddmmyyyy"
  • "YYYYMMDD"

في الإصدارات السابقة، تم تعيين هذا الخيار بأنه "لنا" أو "المملكة المتحدة" أو "DD / MM / YY". تم تعديل هذا الخيار لتنسيقات التاريخ اللازمة بشكل أفضل. سوف يعمل فقط مع أربعة أرقام سنوات!

يجب ضبط فارز على "SHORTDATE" ويمكن تعيين تنسيق التاريخ في خيار "DateFormat" أو تعيين للحصول على أعمدة محددة داخل خيار "الرؤوس". راجع الصفحة التجريبية لرؤيتها تعمل.

$(function(){
  $("table").tablesorter({

    dateFormat : "mmddyyyy", // default date format

    // or to change the format for specific columns,
    // add the dateFormat to the headers option:
    headers: {
      0: { sorter: "shortDate" }, // "shortDate" with the default dateFormat above
      1: { sorter: "shortDate", dateFormat: "ddmmyyyy" }, // day first format
      2: { sorter: "shortDate", dateFormat: "yyyymmdd" }  // year first format
    }

  });
}); 

يمكن تعديل الأعمدة الفردية عن طريق إضافة ما يلي (كلهم يفعلون نفس الشيء)، تعيين حسب الأولوية (تعديل V2.3.1):

  • بيانات jQuery البيانات DateFormat = "mmddyyyyy".
  • Metadata Class = "{dateformat: 'mmddyyyy'}". هذا يتطلب البرنامج المساعد بيانات التعريف.
  • رؤوس رؤوس الخيارات: {0: {dateformat: 'mmddyyyy'}}.
  • Feater Class Name Class = "DateFormat-mmddyyyy". خيار DateFormat العام.

في حالتي التي استخدمتها

$("#myTable").tablesorter({dateFormat: "uk"}) 

للإصدار.

كان هذا هو الجواب بالنسبة لي:

<td data-order=<fmt:formatDate pattern = "yyyy-MM-dd" value = "${myObject.myDate}" />>${myObject.myDate}</td>

مزيد من التفاصيل، هنا: https://datatables.net/manual/data/

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