Использование 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.