سؤال

هل هناك طريقة لتغيير القيمة الافتراضية لصيغة مشاركة ذكاء الوقت؟؟

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

ما أريده هو أن يكون "من التاريخ" قبل 30 يومًا من تاريخ اليوم، ولكن لا يتم فرضه على التقرير الذي يتلقى عوامل التصفية، أريد فقط أن يكون للمرشح قيمة افتراضية ثم السماح للمستخدم باختيار ما يريد.

هل يعرف أحد شيئًا يمكن القيام به، أم أنه لا يمكن القيام به؟

يحرر:

بحث شامل على هذا الرابط أظهر لي أنه لا يمكن القيام بذلك عبر الطرق العادية:

سأل sgrice هذا السؤال:أحب التقويم وسهولة ربطه بالمكعب الخاص بي؛ومع ذلك، ليس لدينا أبدًا بيانات "اليوم" وهو التاريخ الافتراضي.ولذلك، تكون لوحات المعلومات لدينا دائمًا فارغة عند ظهورها لأول مرة ويجب على عميلنا تحديد تاريخ.هل هناك طريقة لتغيير التاريخ الافتراضي؟

يقول كاتب التدوينة في الرد على التعليق:

لا آسف، ولكن سأدخل هذا كاقتراح ميزة.

شكرًا،

أليسون

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

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

المحلول 3

لقد قمت بحلها من خلال جافا سكريبت وJQuery.لقد تحققت بشكل أساسي مما فعله التقويم، وأعدت إنتاجه، أدركت أنه قام بتبديل رؤية التقويم عند النقر فوق اليوم، وبما أنني لم أكن مهتمًا بذلك، فقد قمت بإزالته، واستدعاء طريقة بهذا الاسم pps_TI_calendar_render تمرير ثلاث معلمات، أحدهما كان معرف التقويم td، والآخران كانا التاريخ الذي حددته بالاسم الكامل.لقد قمت بالتحقق مما إذا كان من شأنه أن يقبل معلمتين فقط ، والتاريخ بتنسيق أبسط والنتيجة هي دعوة JavaScript هذه (لاحظ أنني أقوم فقط بتغيير تقويم تاريخ PPS الأول):

pps_TI_calendar_render(  $('.pps_calendarToggleDown').first().parent().closest('td').attr('id'),'01/01/2010');

(تنسيق التاريخ هذا هو الشهر/اليوم/السنة) إذا وضعت على سبيل المثال 14/01/2010 ، فسيضع التقويم في الأول من عام 2011.لذلك انتبه.

ملحوظة في المعلمة الأولى، استخدمت تحديد JQuery للحصول على المعرف الذي أردته، ويمكن تغيير هذا، ولكن يجب أن تكون المعلمة هي معرف العنصر الذي يستخدمه pps.

أتمنى أن يساعدك هذا.

نصائح أخرى

حسنًا، لقد تابعت هذا الموضوع لفترة من الوقت وحاولت العديد من الطرق لتشغيل هذا، وفي النهاية تمكنت من اختراق كل برامج جافا سكريبت SP2010 وSP2007 تقريبًا ووجدت ما يلي للعمل على SP2010 وجعلته يعمل في SP2007 مع بادئة صبي مختلفة.

الخطوة 1:اكتشف ما هي بادئة معرف Javascript لأجزاء التقويم الخاصة بك.

  • للقيام بذلك، ابدأ تشغيل لوحة المعلومات في IE8 أو IE9 واضغط على F12 لبدء مصحح أخطاء Javascript.
  • استخدم Javascript GetElementByTagName("TD") للحصول على قائمة كاملة بجميع علامات TD الموجودة على الصفحة.
  • ابحث عن العلامات التي تحتوي على GUID في المعرف والتي تنتهي بـ _Selection وSelection_Toggle.
  • ستكون هذه أجزاء مرشح التقويم الخاص بك.لاحظ بادئة البداية (في SP2007 كانت ct_100_ وفي SP2010 كانت pps_)

الخطوة 2:أضف جافا سكريبت التالي إلى نهاية صفحتك الرئيسية والتي يتم استخدامها للوحات المعلومات (انظر إلى نهاية المنشور)

الخطوه 3:احفظ الصفحة الرئيسية وقم بتحديث المتصفح الخاص بك ويجب أن يتغير التاريخ إلى الأمس.

لقد قمت أيضًا بإنشاء هذا للوحة معلومات تحتوي على مرشحي تقويم للسماح بتصفية النطاق الزمني وسيؤدي ذلك إلى تعيين التاريخ الأول على 11 يومًا سابقًا والتاريخ الثاني على الأمس.أي أسئلة emil.swanepoel@live.co.za

<script type="text/JavaScript">


var isFirstLoad;
var calendarLoaded = false;
var srcID = "ctl00_m_WebPart_293af46d1c5c4320893d47f86614325bSelection";
var strDate = "Tue Aug 2 00:00:00 UTC+0200 2011";
var t;
var dateBackA = 1;
var dateBackB = 10;
testForCalendar();

function testForCalendar()
{
    isFirstLoad = true;
    if(calendarLoaded != true)
        t = setTimeout("waitForIt()", 5);
}

function waitForIt()
{
    var foundControl = -1;
    var t = document.getElementsByTagName("TD");
    var ts = "";
    var subDateFound = false;
    var xPoint = 0;
    for(var x = 0; x < t.length; x++)
    {
        if((t[x].id.indexOf("pps_") == 0) && t[x].id.indexOf("Selection_Toggle") > 0)
        {
            foundControl = x;
            ts = t[x].id.substring(0, t[x].id.indexOf("_Toggle"));
            xPoint = x;
            x = t.length;
        }
    }
    if(foundControl > -1)
    {
        if(isFirstLoad == true)
        {   
            if(t[xPoint].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML.indexOf("Start Date:") > -1)
                calendarIntercept(ts, calendarDate(new Date(), dateBackB));
            else 
                calendarIntercept(ts, calendarDate(new Date(), dateBackA));
            waitForItSub(xPoint, ts);
            calendarLoaded = true;
            isFirstLoad = false;
        }
        else
            t = setTimeout("waitForIt()", 5);
    }
    else
        t = setTimeout("waitForIt()", 5);   
}

function waitForItSub(startPoint, firstTag)
{
    var foundControl = -1;
    var t = document.getElementsByTagName("TD");
    var tsub = "";
    var xPointNew = 0;
    for(var x = (startPoint++); x < t.length; x++)
    {
        if(t[x].id.indexOf(firstTag) == -1)
        {
            if((t[x].id.indexOf("pps_") == 0) && t[x].id.indexOf("Selection_Toggle") > 0)
            {
                foundControl = x;
                tsub = t[x].id.substring(0, t[x].id.indexOf("_Toggle"));
                xPointNew = x;
                x = t.length;
            }
        }
    }
    if(foundControl > -1)
    {
        if(isFirstLoad == true)
        {   
            if(t[xPointNew].parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.innerHTML.indexOf("Start Date:") > -1)
                calendarIntercept(tsub, calendarDate(new Date(), dateBackB));
            else
                calendarIntercept(tsub, calendarDate(new Date(), dateBackA));
            calendarLoaded = true;
            isFirstLoad = false;
        }
    }
}

function calendarIntercept(inSrcID, inDate)
{
    strDate = (inDate.getMonth()+1) + "/" + inDate.getDate() + "/" + inDate.getFullYear(); 
    pps_TI_calendar_render ( inSrcID, strDate , strDate );
}

function calendarDate(inDate, daysBack)
{
    var returnValue = new Date();
    returnValue.setDate(returnValue.getDate() - daysBack);
    return returnValue;
}

</script>

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

التقنية هي كما يلي:

للعمل مع تاريخ البدء والانتهاء، تحتاج إلى إنشاء تقويمين.ثم تقوم بربط تقويم واحد بـ <> والآخر بـ <>.كصيغة، عليك فقط إدخال يوم:يوم.في التقرير، سيتعين عليك إنشاء مجموعة تسمى "DateRange" أو شيء مشابه.

WITH 
SET [DateRange] AS
   <<StartDate>>.Item(0) :  <<EndDate>>.Item(0)
SELECT
NON EMPTY 
[DateRange]
ON COLUMNS,
{ [Measures].[Price Total] }
ON ROWS
FROM [TurnoverCube]
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top