Использование javascript в schema.xml. Некоторые особенности Calculated и Computed полей.

??????? ??? ????? ? ????????? (????? ? ?? ????? ??????????). ??? ??????????? ?????. ? ????????? ?????? ?? ?????? ????? ? ?? ????, ???? ????? ??????? ?????????? ?????? ?????.

??? ?????????? ? ??????? ??????. ??????? ????????? ? ???? ?????????. ??? ?????? ???? ????? ?????? ? ??????? ???????????? ???????? (???????, ??????? ??? ??????). ???? ???????? ?????????, ?? ???????????? ??????? ????????, ???? ?? ????? ???????? 3 ??? -?? ??????, ????? ???????.

??????? ?????? ??????? ? ?????? Calculated ????. ??????? ??????? ????? ?? ?????????. ??? ??????? ????, ??????? ??? ?????? ? ??????? ? ?????? ?????. ?????? ??? ???? ??. ?? ????????????? ???????????? Today. ? ????????????? ? ???????? ??????? (??? ???????????? ???????? ??????) ??????? ???????? ?????????? ??? ?? ??????? ??? ??????????? ????????? ????? ???????? ????????? ??????? ?? ???????? ?? ???.

??????? ? ????? ? Calculated ????? ? ?????? ??????? ?? ?????? Computed. ? ??? ????? ???????????? Today. ???? ????????????????? ??? ?????????????? ???????? ??????, ?? ???? ? ???????? ???????. ?????? ??? ???? ?? (??, ????? ? ??? ????). ???? ? ???? ?????????? ?????? ? ?????????. ????? ????????? ?????? ?? "=", ? ??? ???????? ?? ">=" ??? "<=" ??????.

? ??? ?????? ???? ????????? ? ??? <HTML><![CDATA[ ]]></HTML> ????? ????????? javascript, ??????? ?? ???????? ??? ???????? ? ?????? ? ??????? ?? ????????.

????? ??? ?????? ??? ?????????? ???????? ???? ? schema.xml ????????? ????????? ???????:

<Field  ID="{FC9947C8-F094-45ff-854D-A6F7E9E5CF4C}"

       Name="Indicator"

       StaticName="Indicator"

       Type="Computed"

       ReadOnly = "TRUE"

      DisplayName="$Resources:dplists, dpincdocfieldindicator;"

       Required="TRUE" Filterable="FALSE">

        <FieldRefs>

          <FieldRef Name="ID"/>

          <FieldRef Name="EndDate"/>

     </FieldRefs>

        <DisplayPattern>

              <HTML><![CDATA[<img src="https://blogs.technet.com/_layouts/images/kpidefault-2.gif" name="indicator]]></HTML>

              <Column Name="ID" />

              <HTML><![CDATA[" id="indicator]]></HTML>

              <Column Name="ID" />

              <HTML><![CDATA[" border="0" />]]></HTML>

              <HTML><![CDATA[<script type='text/javascript'>]]></HTML>

              <HTML><![CDATA[var myImg = document.getElementById("indicator"+]]></HTML>

              <Column Name="ID" />

              <HTML><![CDATA[); ]]></HTML>

          <HTML><![CDATA[var today = new Date(); ]]></HTML>

              <HTML><![CDATA[var threedaysafter= new Date( (new Date()).setDate(today.getDate() + 3) ); ]]></HTML>

              <HTML><![CDATA[var enddate_arr = "]]></HTML>

              <Column Name="EndDate" />

              <HTML><![CDATA[".split(".");]]></HTML>

              <HTML><![CDATA[var enddate = new Date(Date.parse(enddate_arr[2]+"/"+enddate_arr[1]+"/"+enddate_arr[0])); ]]></HTML>

              <HTML><![CDATA[enddate = new Date(enddate.setTime(enddate.getTime()+86399990)); ]]></HTML>

   <HTML><![CDATA[if(enddate >= today && enddate <= threedaysafter ) { ]]></HTML>

              <HTML><![CDATA[myImg.src = "/_layouts/images/kpidefault-1.gif"; } else ]]></HTML>

              <HTML><![CDATA[if(enddate > today ) {]]></HTML>

       <HTML><![CDATA[myImg.src = "/_layouts/images/kpidefault-0.gif"; }]]></HTML>

              <HTML><![CDATA[</script>]]></HTML>

        </DisplayPattern>

      </Field>

? ?????????? ?????????? ??? ????? ??? ?????????:

?????? :

Calculated Field Formulas: https://msdn.microsoft.com/en-us/library/bb862071.aspx

Schema.xml: https://msdn.microsoft.com/en-us/library/ms459356.aspx

Field Element: https://msdn.microsoft.com/en-us/library/ms437580.aspx

Comments

  • Anonymous
    January 01, 2003
    FieldType - пытались делать. Правда времени было мало. Там все те же проблемы. Сложно сделать так, чтобы поле обновлялось в реальном времени, при этом умело показываться в представлениях и на форме просмотра элемента списка.

  • Anonymous
    July 17, 2009
    В результате получилось не портируемое решение на SharePoint 2010 :(  

  • Anonymous
    July 17, 2009
    Я бы все таки сделал свой FieldType.