Агляд:
(АБНАЎЛЕННЕ 12/04/07: Дададзены яшчэ адзін цікавы рэсурс у канцы па спасылцы на іншы блог, які вырашае гэтую праблему з дапамогай вельмі цікавы вэб-часткі)
This blog entry describes how to create a bar graph in SharePoint. This works in both WSS and MOSS environments as it only depends upon the data view web part.
Агульны падыход заключаецца ў наступным:
- Стварэнне спісу або бібліятэкі дакументаў, якая змяшчае дадзеныя, якія вы хочаце графіка.
- Навядзіце адпаведнай бібліятэцы дакументаў / карыстацкі спіс на старонцы і пераўтварыць яго ў вэб-частцы прадстаўлення даных (DVWP).
- Змяніць XSL DVWP для генерацыі HTML, які паказвае ў выглядзе графіка.
Бізнес-сцэнар / Усталёўка:
Я стварыў карыстацкі спіс са стандартным загалоўкам слупка і адзін дадатковы слупок, "Status". This models (Вельмі спрошчана) an "Authorization For Expense" сцэнар, пры якім назва ўяўляе праект і статус значэння з спісу:
- Прапанаваны
- У працэсе
- Запаволенне
Мэтай якой з'яўляецца стварэнне інтэрактыўнага гарызантальнай гістаграмы, якая паказвае Гэтыя коды стану.
Я населеныя спісе і гэта выглядае так:
Стварэнне дадзеных вэб-частка:
Стварыць DVWP шляхам дадання карыстацкіх спісаў на старонку (сайта ў маім выпадку) і вынікайце інструкцыям тут (http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!395.entry).
У дадатак да проста стварэнне DVWP, we also need to set the paging property to show all available rows. Для мяне, гэта выглядае прыкладна так:
У гэты момант, I always close SPD and the browser. I then re-open the page using the browser. This avoids accidentally mucking up the web part layout on the page.
Змяніць XSLT:
Прыйшоў час змяніць XSLT.
I always use visual studio for this. (Паглядзець тут Хочацца зрабіць важная заўвага аб IntelliSense, якія дапамогуць вам многае).
Я ствараю пусты праект дадаць чатыры новых файлаў (replacing the words "Original" and "New" па меры неабходнасці):
- Original.xslt
- New.xslt
- Арыгінальныя Params.xml
- Новы Params.xml
У маім выпадку, гэта выглядае так:
Modify the web part and copy the params and XSL to the "Original" У версіі Visual Studio.
Мэта тут складаецца, каб выклікаць XSL для пераўтварэння вынікаў мы вернемся з DVWP запыту ў HTML, які адлюстроўваецца як граф.
З гэтай мэтай, it helps to first consider what the HTML should look like before we get confused by the insanity that is known as "XSL". (Каб было ясна, Наступныя проста прыклад; don’t type it or copy/paste into visual studio. I provide a full blow starting point for that later in the write-up). The following sample graph is rendered as per the HTML immediately following:
Адпаведны HTML:
<HTML> <цела> <цэнтр> <Шырыня стала = 80%> <тр><TD><цэнтр>Гарызантальная гістаграма</TD></тр> <тр> <td align="center"> <table border="1" шырыня = 80%> <тр> <TD шырыня = 10%>Адкрыць</TD> <TD><Табліца CellPadding ="0" CELLSPACING ="0" мяжа = 0 шырыня = 50%><BGCOLOR TR = чырвоны><TD>&NBSP;</TD></тр></стол></TD> </тр> <тр> <TD шырыня = 10%>Закрыта</TD> <TD><Табліца CellPadding ="0" CELLSPACING ="0" мяжа = 0 шырыня = 25%><BGCOLOR TR = чырвоны><TD>&NBSP;</TD></тр></стол></TD> </тр> <тр> <TD шырыня = 10%>Запаволенне</TD> <TD><Табліца CellPadding ="0" CELLSPACING ="0" мяжа = 0 шырыня = 25%><BGCOLOR TR = чырвоны><TD>&NBSP;</TD></тр></стол></TD> </тр> </стол> </TD> </тр> </стол> </цела> </HTML> |
I used a dead simple approach to creating my bars by setting the background color of a row to "red".
Вынас вось гэтая: У рэшце рэшт, усё, што мы робім, гэта стварэнне HTML са радкамі і слупкамі.
Шаблон XSLT:
I’ve copied the XSLT that generates a horizontal bar graph. It’s fairly well commented so I won’t add much here except for these notes:
- Я пачаў з XSL па змаўчанні, што SharePoint Designer даў мне, калі я ўпершыню стварыў DVWP.
- Я быў у стане рассячы гэты ўніз ад СДПГ 657 ліній 166 lines.
- Я не важдацца з XML-файла параметраў (якая з'яўляецца асобнай ад XSL, і вы будзеце ведаць, што я маю на ўвазе, калі вы ідзяце, каб змяніць сябе DVWP; Ёсць два файла можна змяніць). Аднак, для таго, каб спрасціць, I did remove nearly all of them from the XSL. This means that if you want to make use of those parameters, you just need to add their variable definitions back to the XSL. That will be easy since you will have the original XSL variable definitions in your visual studio project.
- You ought to be able to copy and paste this directly into your visual studio project. Затым, remove my calls and insert your own calls to "ShowBar".
- Дэталізацыі працуе шляхам стварэння <HREF> вось так: http://server/List?FilterField1=fieldname&FilterValue1=actualFilterValue. This technique may be of value in other contexts. At first, Я думаў, што трэба, каб адпавядаць больш складаны фармат: http://server/List/AllItems.aspx?View={guid}&FilterField1=blah&FilterValue1=blah, but in my environment that is not necessary. The List’s URL is passed to us by SharePoint so this is quite easy to generalize.
Вось яна:
<XSL:стыляў версія="1.0" выключаюць-вынік-прэфіксы="RS Z O S DDWRT DT msxsl" |
Вынікі:
XSL зверху генеруе гэты графік:
Перайдзіце да базавых дадзеных, націснуўшы на код стану:
Заключэнне Думак:
Ці можа гэта быць абагульнены?
Я люблю гэтую канцэпцыю графічнага, but I hate the fact that I have to go in and do so much hand-coding. I’ve given a little thought to whether it can be generalized and I’m optimistic, but I’m also a little fearful that there may be a brick wall somewhere along the path that won’t offer any work-around. If anyone has some good ideas on this, калі ласка, запішыце ў каментарах або напішыце мне.
Вертыкальныя Графікі:
This is a horizontal bar graph. It’s certainly possible to create a vertical graph. We just need to change the HTML. I would start the same way: Create an HTML representation of a vertical bar graph and then figure out how to get that via XSL. If anyone is interested in that, I could be persuaded to try it out and work out the kinks. If someone has already done that, калі ласка, дайце мне ведаць, і я з задавальненнем спасылку на свой блог 🙂
Я думаю, што праблема з вертыкальнай граф тым, што цэтлікі для графа цяжэй кіраваць, але, вядома, не выключана,.
Імя поля Гоча:
Ёсць, па меншай меры, дзве рэчы, якія трэба паглядзець з вашымі імёнамі палёў.
Першы, a field name with a space has to be escaped in the XSL. This will probably be an issue here:
<XSL:пераменная імя="totalProposed"
выбіраць="лічыць(/dsQueryResponse / Радкі / радкоў[нармалізаваць прастору(@ Статус) = 'Прапанаваная'])" />
If your "Status" column is actually named "Status Code" then you need to reference it as "Status_x0020_Code":
<XSL:пераменная імя="totalProposed"
выбіраць="лічыць(/dsQueryResponse / Радкі / радкоў[нармалізаваць прастору(@ Status_x0020_Code) = 'Прапанаваная'])" />Другі, і я трохі невыразнай на гэтым, but you also need to be on the alert for field name changes. If you name your field "Status Code" а потым на, rename it to "AFE Status", the "internal name" does not change. The internal name will still be "Status Code" and must be referenced as "Status_x0020_Code". The "other resources" спасылкі могуць дапамагчы дыягнаставаць і выправіць гэтую праблему.
Пра тое, што колер:
I picked "red" because it’s pleasing to me at the moment. It would not be a big deal to show different colors so as to provide more than just a visual description of a number, but to also provide a useful KPI. Напрыклад, if the percentage of "stalled" AFE з'яўляецца > 10% затым паказаць яго чырвоным, otherwise show it in black. Выкарыстоўваць <XSL:выбіраць> для дасягнення гэтай мэты.
Іншыя рэсурсы:
- Вызначыць ўнутранае імя (і іншых добрых інфармацыя) для дадзеных у спіс: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!134.entry
- Паказаць усе дадзеныя, якія прадстаўляюцца SharePoint (сырой XML): http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!190.entry
- Атрымаць выраз XPATH пэўнага слупка: http://paulgalvin.spaces.live.com/blog/cns!1CC1EDB3DAA9B8AA!155.entry
- Іншы падыход з выкарыстаннем OWA(?). I have not dug into it, але выглядае шматспадзеўна, асабліва для кругавых дыяграм: http://www.waka.dk/Blog/PermaLink,guid,e2532e71-d774-4ac9-8f25-883964b830f4.aspx
Шчаслівыя пераўтварэнні!
<канец />