/CMSWebParts/Sharepoint/SharePointDataList.ascx.cs

https://bitbucket.org/kudutest2/kenticogit · C# · 1204 lines · 855 code · 160 blank · 189 comment · 45 complexity · 4b4332bbf34a4916065472029c841c7b MD5 · raw file

  1. using System;
  2. using System.Data;
  3. using System.Configuration;
  4. using System.Collections;
  5. using System.Web;
  6. using System.Web.UI;
  7. using System.Web.UI.WebControls;
  8. using System.Xml;
  9. using System.Xml.Xsl;
  10. using CMS.CMSHelper;
  11. using CMS.GlobalHelper;
  12. using CMS.PortalControls;
  13. using CMS.SettingsProvider;
  14. using CMS.Controls;
  15. using CMS.SiteProvider;
  16. public partial class CMSWebParts_SharePoint_SharePointDataList : CMSAbstractWebPart
  17. {
  18. #region "SharePoint data source properties"
  19. /// <summary>
  20. /// Gets or sets value of username.
  21. /// </summary>
  22. public string Username
  23. {
  24. get
  25. {
  26. return ValidationHelper.GetString(this.GetValue("Username"), SPDataSource.Username);
  27. }
  28. set
  29. {
  30. this.SetValue("Username", value);
  31. SPDataSource.Username = value;
  32. }
  33. }
  34. /// <summary>
  35. /// Gets or sets value of password.
  36. /// </summary>
  37. public string Password
  38. {
  39. get
  40. {
  41. return ValidationHelper.GetString(this.GetValue("Password"), SPDataSource.Password);
  42. }
  43. set
  44. {
  45. this.SetValue("Password", value);
  46. SPDataSource.Password = value;
  47. }
  48. }
  49. /// <summary>
  50. /// Gets or sets value of SharePoint list name.
  51. /// </summary>
  52. public string ListName
  53. {
  54. get
  55. {
  56. return ValidationHelper.GetString(this.GetValue("ListName"), SPDataSource.ListName);
  57. }
  58. set
  59. {
  60. this.SetValue("ListName", value);
  61. SPDataSource.ListName = value;
  62. }
  63. }
  64. /// <summary>
  65. /// Gets or sets URL of SharePoint service (Eg. Lists.asmx, Imaging.asmx).
  66. /// </summary>
  67. public string SPServiceURL
  68. {
  69. get
  70. {
  71. return ValidationHelper.GetString(this.GetValue("SPServiceURL"), SPDataSource.SPServiceURL);
  72. }
  73. set
  74. {
  75. this.SetValue("SPServiceURL", value);
  76. SPDataSource.SPServiceURL = value;
  77. }
  78. }
  79. /// <summary>
  80. /// Enables or disables showing CAML on output.
  81. /// </summary>
  82. public bool ShowReturnedCAML
  83. {
  84. get
  85. {
  86. return ValidationHelper.GetBoolean(this.GetValue("ShowReturnedCAML"), SPDataSource.ShowReturnedCAML);
  87. }
  88. set
  89. {
  90. this.SetValue("ShowReturnedCAML", value);
  91. SPDataSource.ShowReturnedCAML = value;
  92. }
  93. }
  94. /// <summary>
  95. /// Gets or set the row limit.
  96. /// </summary>
  97. public int RowLimit
  98. {
  99. get
  100. {
  101. return ValidationHelper.GetInteger(this.GetValue("RowLimit"), SPDataSource.RowLimit);
  102. }
  103. set
  104. {
  105. this.SetValue("RowLimit", value);
  106. SPDataSource.RowLimit = value;
  107. }
  108. }
  109. /// <summary>
  110. /// Gets or sets query to specify which document should be retrieved (like where condition).
  111. /// </summary>
  112. public string Query
  113. {
  114. get
  115. {
  116. return ValidationHelper.GetString(this.GetValue("Query"), SPDataSource.Query);
  117. }
  118. set
  119. {
  120. this.SetValue("Query", value);
  121. SPDataSource.Query = value;
  122. }
  123. }
  124. /// <summary>
  125. /// Gets or sets document fields which should be retrieved.
  126. /// </summary>
  127. public string ViewFields
  128. {
  129. get
  130. {
  131. return ValidationHelper.GetString(this.GetValue("ViewFields"), SPDataSource.ViewFields);
  132. }
  133. set
  134. {
  135. this.SetValue("ViewFields", value);
  136. SPDataSource.ViewFields = value;
  137. }
  138. }
  139. /// <summary>
  140. /// Enables or disables using of classic dataset as data source for ASCX transformation.
  141. /// </summary>
  142. public bool UseClassicDataset
  143. {
  144. get
  145. {
  146. return ValidationHelper.GetBoolean(this.GetValue("UseClassicDataset"), SPDataSource.UseClassicDataset);
  147. }
  148. set
  149. {
  150. this.SetValue("UseClassicDataset", value);
  151. SPDataSource.UseClassicDataset = value;
  152. }
  153. }
  154. /// <summary>
  155. /// Gets or sets fields which should be included in dataset
  156. /// Note: Only if UseClassicDataset is enabled
  157. /// </summary>
  158. public string Fields
  159. {
  160. get
  161. {
  162. return ValidationHelper.GetString(this.GetValue("Fields"), SPDataSource.Fields);
  163. }
  164. set
  165. {
  166. this.SetValue("Fields", value);
  167. SPDataSource.Fields = value;
  168. }
  169. }
  170. /// <summary>
  171. /// Gets or sets the mode which specifies what this webpart exactly do.
  172. /// </summary>
  173. public string Mode
  174. {
  175. get
  176. {
  177. return ValidationHelper.GetString(this.GetValue("Mode"), SPDataSource.Mode);
  178. }
  179. set
  180. {
  181. this.SetValue("Mode", value);
  182. SPDataSource.Mode = value;
  183. }
  184. }
  185. /// <summary>
  186. /// Gets or sets query string key name. Presence of the key in query string indicates,
  187. /// that some item should be selected. The item is determined by query string value.
  188. /// </summary>
  189. public string ItemIDField
  190. {
  191. get
  192. {
  193. return ValidationHelper.GetString(this.GetValue("ItemIDField"), SPDataSource.ItemIDField);
  194. }
  195. set
  196. {
  197. this.SetValue("ItemIDField", value);
  198. SPDataSource.ItemIDField = value;
  199. }
  200. }
  201. /// <summary>
  202. /// Gets or sets the field name which is used for selecting item. Case sensitive!
  203. /// </summary>
  204. public string SelectedItemFieldName
  205. {
  206. get
  207. {
  208. return ValidationHelper.GetString(this.GetValue("SelectedItemFieldName"), SPDataSource.SelectedItemFieldName);
  209. }
  210. set
  211. {
  212. this.SetValue("SelectedItemFieldName", value);
  213. SPDataSource.SelectedItemFieldName = value;
  214. }
  215. }
  216. /// <summary>
  217. /// Gets or sets the type of field for selecting item.
  218. /// </summary>
  219. public string ItemIDFieldType
  220. {
  221. get
  222. {
  223. return ValidationHelper.GetString(this.GetValue("ItemIDFieldType"), SPDataSource.ItemIDFieldType);
  224. }
  225. set
  226. {
  227. this.SetValue("ItemIDFieldType", value);
  228. SPDataSource.ItemIDFieldType = value;
  229. }
  230. }
  231. #endregion
  232. #region "BasicDataList properties"
  233. /// <summary>
  234. /// Gets or sets HideControlForZeroRows property.
  235. /// </summary>
  236. public bool HideControlForZeroRows
  237. {
  238. get
  239. {
  240. return ValidationHelper.GetBoolean(this.GetValue("HideControlForZeroRows"), this.BasicDataList.HideControlForZeroRows);
  241. }
  242. set
  243. {
  244. this.SetValue("HideControlForZeroRows", value);
  245. this.BasicDataList.HideControlForZeroRows = value;
  246. }
  247. }
  248. /// <summary>
  249. /// Gets or sets ZeroRowsText property.
  250. /// </summary>
  251. public string ZeroRowsText
  252. {
  253. get
  254. {
  255. return ValidationHelper.GetString(this.GetValue("ZeroRowsText"), this.BasicDataList.ZeroRowsText);
  256. }
  257. set
  258. {
  259. this.SetValue("ZeroRowsText", value);
  260. this.BasicDataList.ZeroRowsText = value;
  261. }
  262. }
  263. /// <summary>
  264. /// Gets or sets the count of repeat columns.
  265. /// </summary>
  266. public int RepeatColumns
  267. {
  268. get
  269. {
  270. return ValidationHelper.GetInteger(this.GetValue("RepeatColumns"), this.BasicDataList.RepeatColumns);
  271. }
  272. set
  273. {
  274. this.SetValue("RepeatColumns", value);
  275. this.BasicDataList.RepeatColumns = value;
  276. }
  277. }
  278. /// <summary>
  279. /// Gets or sets whether control is displayed in a table or flow layout.
  280. /// </summary>
  281. public RepeatLayout RepeatLayout
  282. {
  283. get
  284. {
  285. return CMSDataList.GetRepeatLayout(DataHelper.GetNotEmpty(this.GetValue("RepeatLayout"), this.BasicDataList.RepeatLayout.ToString()));
  286. }
  287. set
  288. {
  289. this.SetValue("RepeatLayout", value.ToString());
  290. this.BasicDataList.RepeatLayout = value;
  291. }
  292. }
  293. /// <summary>
  294. /// Gets or sets whether DataList control displays vertically or horizontally.
  295. /// </summary>
  296. public RepeatDirection RepeatDirection
  297. {
  298. get
  299. {
  300. return CMSDataList.GetRepeatDirection(DataHelper.GetNotEmpty(this.GetValue("RepeatDirection"), this.BasicDataList.RepeatDirection.ToString()));
  301. }
  302. set
  303. {
  304. this.SetValue("RepeatDirection", value.ToString());
  305. this.BasicDataList.RepeatDirection = value;
  306. }
  307. }
  308. #endregion
  309. #region "BasicDataList template properties"
  310. /// <summary>
  311. /// Gets or sets ItemTemplate property.
  312. /// </summary>
  313. public string TransformationName
  314. {
  315. get
  316. {
  317. return ValidationHelper.GetString(this.GetValue("TransformationName"), "");
  318. }
  319. set
  320. {
  321. this.SetValue("TransformationName", value);
  322. }
  323. }
  324. /// <summary>
  325. /// Gets or sets AlternatingItemTemplate property.
  326. /// </summary>
  327. public string AlternatingItemTransformationName
  328. {
  329. get
  330. {
  331. return ValidationHelper.GetString(this.GetValue("AlternatingItemTransformationName"), "");
  332. }
  333. set
  334. {
  335. this.SetValue("AlternatingItemTransformationName", value);
  336. }
  337. }
  338. /// <summary>
  339. /// Gets or sets FooterTemplate property.
  340. /// </summary>
  341. public string FooterTransformationName
  342. {
  343. get
  344. {
  345. return ValidationHelper.GetString(this.GetValue("FooterTransformationName"), "");
  346. }
  347. set
  348. {
  349. this.SetValue("FooterTransformationName", value);
  350. }
  351. }
  352. /// <summary>
  353. /// Gets or sets HeaderTemplate property.
  354. /// </summary>
  355. public string HeaderTransformationName
  356. {
  357. get
  358. {
  359. return ValidationHelper.GetString(this.GetValue("HeaderTransformationName"), "");
  360. }
  361. set
  362. {
  363. this.SetValue("HeaderTransformationName", value);
  364. }
  365. }
  366. /// <summary>
  367. /// Gets or sets SeparatorTemplate property.
  368. /// </summary>
  369. public string SeparatorTransformationName
  370. {
  371. get
  372. {
  373. return ValidationHelper.GetString(this.GetValue("SeparatorTransformationName"), "");
  374. }
  375. set
  376. {
  377. this.SetValue("SeparatorTransformationName", value);
  378. }
  379. }
  380. /// <summary>
  381. /// Gets or sets SelectedItemStyle property.
  382. /// </summary>
  383. public string SelectedItemTransformationName
  384. {
  385. get
  386. {
  387. return ValidationHelper.GetString(this.GetValue("SelectedItemTransformationName"), "");
  388. }
  389. set
  390. {
  391. this.SetValue("SelectedItemTransformationName", value);
  392. }
  393. }
  394. /// <summary>
  395. /// Gets or sets FooterTemplate for selected item.
  396. /// </summary>
  397. public string SelectedItemFooterTransformationName
  398. {
  399. get
  400. {
  401. return ValidationHelper.GetString(this.GetValue("SelectedItemFooterTransformationName"), "");
  402. }
  403. set
  404. {
  405. this.SetValue("SelectedItemFooterTransformationName", value);
  406. }
  407. }
  408. /// <summary>
  409. /// Gets or sets HeaderTemplate for selected item.
  410. /// </summary>
  411. public string SelectedItemHeaderTransformationName
  412. {
  413. get
  414. {
  415. return ValidationHelper.GetString(this.GetValue("SelectedItemHeaderTransformationName"), "");
  416. }
  417. set
  418. {
  419. this.SetValue("SelectedItemHeaderTransformationName", value);
  420. }
  421. }
  422. #endregion
  423. #region "UniPager properties"
  424. /// <summary>
  425. /// Gets or sets the value that indicates whether pager should be hidden for single page.
  426. /// </summary>
  427. public bool HidePagerForSinglePage
  428. {
  429. get
  430. {
  431. return ValidationHelper.GetBoolean(GetValue("HidePagerForSinglePage"), pagerElem.HidePagerForSinglePage);
  432. }
  433. set
  434. {
  435. SetValue("HidePagerForSinglePage", value);
  436. pagerElem.HidePagerForSinglePage = value;
  437. }
  438. }
  439. /// <summary>
  440. /// Gets or sets the number of records to display on a page.
  441. /// </summary>
  442. public int PageSize
  443. {
  444. get
  445. {
  446. return ValidationHelper.GetInteger(GetValue("PageSize"), pagerElem.PageSize);
  447. }
  448. set
  449. {
  450. SetValue("PageSize", value);
  451. pagerElem.PageSize = value;
  452. }
  453. }
  454. /// <summary>
  455. /// Gets or sets the number of pages displayed for current page range.
  456. /// </summary>
  457. public int GroupSize
  458. {
  459. get
  460. {
  461. return ValidationHelper.GetInteger(GetValue("GroupSize"), pagerElem.GroupSize);
  462. }
  463. set
  464. {
  465. SetValue("GroupSize", value);
  466. pagerElem.GroupSize = value;
  467. }
  468. }
  469. /// <summary>
  470. /// Gets or sets the pager mode ('querystring' or 'postback').
  471. /// </summary>
  472. public string PagingMode
  473. {
  474. get
  475. {
  476. return ValidationHelper.GetString(GetValue("PagingMode"), pagerElem.PagerMode.ToString());
  477. }
  478. set
  479. {
  480. if (value != null)
  481. {
  482. SetValue("PagingMode", value);
  483. switch (value.ToLower())
  484. {
  485. case "postback": pagerElem.PagerMode = UniPagerMode.PostBack; break;
  486. default: pagerElem.PagerMode = UniPagerMode.Querystring; break;
  487. }
  488. }
  489. }
  490. }
  491. /// <summary>
  492. /// Gets or sets the querysting parameter.
  493. /// </summary>
  494. public string QueryStringKey
  495. {
  496. get
  497. {
  498. return ValidationHelper.GetString(GetValue("QueryStringKey"), pagerElem.QueryStringKey);
  499. }
  500. set
  501. {
  502. SetValue("QueryStringKey", value);
  503. pagerElem.QueryStringKey = value;
  504. }
  505. }
  506. /// <summary>
  507. /// Gets or sets the value that indicates whether first and last item template are displayed dynamically based on current view.
  508. /// </summary>
  509. public bool DisplayFirstLastAutomatically
  510. {
  511. get
  512. {
  513. return ValidationHelper.GetBoolean(GetValue("DisplayFirstLastAutomatically"), pagerElem.DisplayFirstLastAutomatically);
  514. }
  515. set
  516. {
  517. SetValue("DisplayFirstLastAutomatically", value);
  518. pagerElem.DisplayFirstLastAutomatically = value;
  519. }
  520. }
  521. /// <summary>
  522. /// Gets or sets the value that indicates whether first and last item template are displayed dynamically based on current view.
  523. /// </summary>
  524. public bool DisplayPreviousNextAutomatically
  525. {
  526. get
  527. {
  528. return ValidationHelper.GetBoolean(GetValue("DisplayPreviousNextAutomatically"), pagerElem.DisplayPreviousNextAutomatically);
  529. }
  530. set
  531. {
  532. SetValue("DisplayPreviousNextAutomatically", value);
  533. pagerElem.DisplayPreviousNextAutomatically = value;
  534. }
  535. }
  536. #endregion
  537. #region "UniPager Template properties"
  538. /// <summary>
  539. /// Gets or sets the pages template.
  540. /// </summary>
  541. public string PagesTemplate
  542. {
  543. get
  544. {
  545. return ValidationHelper.GetString(GetValue("Pages"), "");
  546. }
  547. set
  548. {
  549. SetValue("Pages", value);
  550. }
  551. }
  552. /// <summary>
  553. /// Gets or sets the current page template.
  554. /// </summary>
  555. public string CurrentPageTemplate
  556. {
  557. get
  558. {
  559. return ValidationHelper.GetString(GetValue("CurrentPage"), "");
  560. }
  561. set
  562. {
  563. SetValue("CurrentPage", value);
  564. }
  565. }
  566. /// <summary>
  567. /// Gets or sets the separator template.
  568. /// </summary>
  569. public string SeparatorTemplate
  570. {
  571. get
  572. {
  573. return ValidationHelper.GetString(GetValue("PageSeparator"), "");
  574. }
  575. set
  576. {
  577. SetValue("PageSeparator", value);
  578. }
  579. }
  580. /// <summary>
  581. /// Gets or sets the first page template.
  582. /// </summary>
  583. public string FirstPageTemplate
  584. {
  585. get
  586. {
  587. return ValidationHelper.GetString(GetValue("FirstPage"), "");
  588. }
  589. set
  590. {
  591. SetValue("FirstPage", value);
  592. }
  593. }
  594. /// <summary>
  595. /// Gets or sets the last page template.
  596. /// </summary>
  597. public string LastPageTemplate
  598. {
  599. get
  600. {
  601. return ValidationHelper.GetString(GetValue("LastPage"), "");
  602. }
  603. set
  604. {
  605. SetValue("LastPage", value);
  606. }
  607. }
  608. /// <summary>
  609. /// Gets or sets the previous page template.
  610. /// </summary>
  611. public string PreviousPageTemplate
  612. {
  613. get
  614. {
  615. return ValidationHelper.GetString(GetValue("PreviousPage"), "");
  616. }
  617. set
  618. {
  619. SetValue("PreviousPage", value);
  620. }
  621. }
  622. /// <summary>
  623. /// Gets or sets the next page template.
  624. /// </summary>
  625. public string NextPageTemplate
  626. {
  627. get
  628. {
  629. return ValidationHelper.GetString(GetValue("NextPage"), "");
  630. }
  631. set
  632. {
  633. SetValue("NextPage", value);
  634. }
  635. }
  636. /// <summary>
  637. /// Gets or sets the previous group template.
  638. /// </summary>
  639. public string PreviousGroupTemplate
  640. {
  641. get
  642. {
  643. return ValidationHelper.GetString(GetValue("PreviousGroup"), "");
  644. }
  645. set
  646. {
  647. SetValue("PreviousGroup", value);
  648. }
  649. }
  650. /// <summary>
  651. /// Gets or sets the next group template.
  652. /// </summary>
  653. public string NextGroupTemplate
  654. {
  655. get
  656. {
  657. return ValidationHelper.GetString(GetValue("NextGroup"), "");
  658. }
  659. set
  660. {
  661. SetValue("NextGroup", value);
  662. }
  663. }
  664. /// <summary>
  665. /// Gets or sets the layout template.
  666. /// </summary>
  667. public string LayoutTemplate
  668. {
  669. get
  670. {
  671. return ValidationHelper.GetString(GetValue("PagerLayout"), "");
  672. }
  673. set
  674. {
  675. SetValue("PagerLayout", value);
  676. }
  677. }
  678. /// <summary>
  679. /// Gets or sets the direct page template.
  680. /// </summary>
  681. public string DirectPageTemplate
  682. {
  683. get
  684. {
  685. return ValidationHelper.GetString(GetValue("DirectPage"), "");
  686. }
  687. set
  688. {
  689. SetValue("DirectPage", value);
  690. }
  691. }
  692. #endregion
  693. #region "Overridden properties"
  694. /// <summary>
  695. /// Gets or sets the cache item name.
  696. /// </summary>
  697. public override string CacheItemName
  698. {
  699. get
  700. {
  701. return base.CacheItemName;
  702. }
  703. set
  704. {
  705. base.CacheItemName = value;
  706. SPDataSource.CacheItemName = value;
  707. }
  708. }
  709. /// <summary>
  710. /// Cache dependencies, each cache dependency on a new line.
  711. /// </summary>
  712. public override string CacheDependencies
  713. {
  714. get
  715. {
  716. return ValidationHelper.GetString(base.CacheDependencies, SPDataSource.CacheDependencies);
  717. }
  718. set
  719. {
  720. base.CacheDependencies = value;
  721. SPDataSource.CacheDependencies = value;
  722. }
  723. }
  724. /// <summary>
  725. /// Gets or sets the cache minutes.
  726. /// </summary>
  727. public override int CacheMinutes
  728. {
  729. get
  730. {
  731. return base.CacheMinutes;
  732. }
  733. set
  734. {
  735. base.CacheMinutes = value;
  736. SPDataSource.CacheMinutes = value;
  737. }
  738. }
  739. /// <summary>
  740. /// Indicates if the control should perform the operations.
  741. /// </summary>
  742. public override bool StopProcessing
  743. {
  744. get
  745. {
  746. return base.StopProcessing;
  747. }
  748. set
  749. {
  750. base.StopProcessing = value;
  751. this.SPDataSource.StopProcessing = value;
  752. }
  753. }
  754. #endregion
  755. #region "Methods"
  756. /// <summary>
  757. /// Content loaded event handler.
  758. /// </summary>
  759. public override void OnContentLoaded()
  760. {
  761. base.OnContentLoaded();
  762. SetupControl();
  763. }
  764. /// <summary>
  765. /// Initializes the control properties.
  766. /// </summary>
  767. protected void SetupControl()
  768. {
  769. // Set stop processing to inner controls trough property setter
  770. StopProcessing = StopProcessing;
  771. if (this.StopProcessing)
  772. {
  773. // Do nothing
  774. }
  775. else
  776. {
  777. BasicDataList.DataBindByDefault = false;
  778. pagerElem.PageControl = BasicDataList.ID;
  779. if (!String.IsNullOrEmpty(TransformationName))
  780. {
  781. // Set SharePoint datasource properties
  782. SPDataSource.Username = this.Username;
  783. SPDataSource.Password = EncryptionHelper.DecryptData(this.Password);
  784. SPDataSource.ListName = this.ListName;
  785. SPDataSource.SPServiceURL = this.SPServiceURL;
  786. SPDataSource.ShowReturnedCAML = this.ShowReturnedCAML;
  787. SPDataSource.RowLimit = this.RowLimit;
  788. SPDataSource.Query = this.Query;
  789. SPDataSource.ViewFields = this.ViewFields;
  790. SPDataSource.UseClassicDataset = this.UseClassicDataset;
  791. SPDataSource.Fields = this.Fields;
  792. SPDataSource.Mode = this.Mode;
  793. SPDataSource.ItemIDField = this.ItemIDField;
  794. SPDataSource.SelectedItemFieldName = this.SelectedItemFieldName;
  795. SPDataSource.ItemIDFieldType = this.ItemIDFieldType;
  796. SPDataSource.CacheItemName = this.CacheItemName;
  797. SPDataSource.CacheDependencies = this.CacheDependencies;
  798. SPDataSource.CacheMinutes = this.CacheMinutes;
  799. // Classic dataset OR XSLT transformation
  800. if (this.UseClassicDataset)
  801. {
  802. // Basic datalist properties
  803. BasicDataList.RepeatColumns = RepeatColumns;
  804. BasicDataList.RepeatLayout = RepeatLayout;
  805. BasicDataList.RepeatDirection = RepeatDirection;
  806. BasicDataList.HideControlForZeroRows = HideControlForZeroRows;
  807. BasicDataList.ZeroRowsText = ZeroRowsText;
  808. // UniPager properties
  809. pagerElem.PageSize = PageSize;
  810. pagerElem.GroupSize = GroupSize;
  811. pagerElem.QueryStringKey = QueryStringKey;
  812. pagerElem.DisplayFirstLastAutomatically = DisplayFirstLastAutomatically;
  813. pagerElem.DisplayPreviousNextAutomatically = DisplayPreviousNextAutomatically;
  814. pagerElem.HidePagerForSinglePage = HidePagerForSinglePage;
  815. switch (PagingMode.ToLower())
  816. {
  817. case "postback":
  818. pagerElem.PagerMode = UniPagerMode.PostBack;
  819. break;
  820. default:
  821. pagerElem.PagerMode = UniPagerMode.Querystring;
  822. break;
  823. }
  824. #region "UniPager template properties"
  825. // UniPager template properties
  826. if (!string.IsNullOrEmpty(PagesTemplate))
  827. {
  828. pagerElem.PageNumbersTemplate = CMSDataProperties.LoadTransformation(pagerElem, PagesTemplate, false);
  829. }
  830. if (!string.IsNullOrEmpty(CurrentPageTemplate))
  831. {
  832. pagerElem.CurrentPageTemplate = CMSDataProperties.LoadTransformation(pagerElem, CurrentPageTemplate, false);
  833. }
  834. if (!string.IsNullOrEmpty(SeparatorTemplate))
  835. {
  836. pagerElem.PageNumbersSeparatorTemplate = CMSDataProperties.LoadTransformation(pagerElem, SeparatorTemplate, false);
  837. }
  838. if (!string.IsNullOrEmpty(FirstPageTemplate))
  839. {
  840. pagerElem.FirstPageTemplate = CMSDataProperties.LoadTransformation(pagerElem, FirstPageTemplate, false);
  841. }
  842. if (!string.IsNullOrEmpty(LastPageTemplate))
  843. {
  844. pagerElem.LastPageTemplate = CMSDataProperties.LoadTransformation(pagerElem, LastPageTemplate, false);
  845. }
  846. if (!string.IsNullOrEmpty(PreviousPageTemplate))
  847. {
  848. pagerElem.PreviousPageTemplate = CMSDataProperties.LoadTransformation(pagerElem, PreviousPageTemplate, false);
  849. }
  850. if (!string.IsNullOrEmpty(NextPageTemplate))
  851. {
  852. pagerElem.NextPageTemplate = CMSDataProperties.LoadTransformation(pagerElem, NextPageTemplate, false);
  853. }
  854. if (!string.IsNullOrEmpty(PreviousGroupTemplate))
  855. {
  856. pagerElem.PreviousGroupTemplate = CMSDataProperties.LoadTransformation(pagerElem, PreviousGroupTemplate, false);
  857. }
  858. if (!string.IsNullOrEmpty(NextGroupTemplate))
  859. {
  860. pagerElem.NextGroupTemplate = CMSDataProperties.LoadTransformation(pagerElem, NextGroupTemplate, false);
  861. }
  862. if (!String.IsNullOrEmpty(DirectPageTemplate))
  863. {
  864. pagerElem.DirectPageTemplate = CMSDataProperties.LoadTransformation(pagerElem, DirectPageTemplate, false);
  865. }
  866. if (!string.IsNullOrEmpty(LayoutTemplate))
  867. {
  868. pagerElem.LayoutTemplate = CMSDataProperties.LoadTransformation(pagerElem, LayoutTemplate, false);
  869. }
  870. #endregion
  871. }
  872. else
  873. {
  874. plcDataset.Visible = false;
  875. plcXSLT.Visible = true;
  876. }
  877. // Load and bind data
  878. BindData();
  879. }
  880. }
  881. }
  882. /// <summary>
  883. /// OnPreRender override.
  884. /// </summary>
  885. protected override void OnPreRender(EventArgs e)
  886. {
  887. if(!string.IsNullOrEmpty(SPDataSource.ErrorMessage))
  888. {
  889. ShowError(SPDataSource.ErrorMessage) ;
  890. plcDataset.Visible = false;
  891. plcXSLT.Visible = false;
  892. pagerElem.Visible = false;
  893. }
  894. else
  895. {
  896. //DataSet
  897. if (this.UseClassicDataset)
  898. {
  899. if (HideControlForZeroRows && !BasicDataList.HasData())
  900. {
  901. this.Visible = false;
  902. }
  903. }
  904. // XSLT
  905. else
  906. {
  907. if (!SPDataSource.HasData)
  908. {
  909. // Hide or display zero rows message
  910. if (HideControlForZeroRows)
  911. {
  912. this.Visible = false;
  913. }
  914. else
  915. {
  916. Label lblZeroRowsText = new Label();
  917. lblZeroRowsText.Text = this.ZeroRowsText;
  918. Controls.Add(lblZeroRowsText);
  919. }
  920. }
  921. }
  922. }
  923. base.OnPreRender(e);
  924. }
  925. /// <summary>
  926. /// Reload data.
  927. /// </summary>
  928. public override void ReloadData()
  929. {
  930. base.ReloadData();
  931. SetupControl();
  932. BasicDataList.ReloadData(true);
  933. }
  934. /// <summary>
  935. /// Binds data to basic data list.
  936. /// </summary>
  937. protected void BindData()
  938. {
  939. // Dataset = connects datalist with data source
  940. if (this.UseClassicDataset)
  941. {
  942. // Connect data list with data source
  943. BasicDataList.DataSource = SPDataSource.DataSource;
  944. if (!DataHelper.DataSourceIsEmpty(BasicDataList.DataSource))
  945. {
  946. // Set proper transformations
  947. LoadTransformations();
  948. BasicDataList.DataBind();
  949. }
  950. }
  951. // XSLT
  952. else
  953. {
  954. XmlNode caml = SPDataSource.DataSource as XmlNode;
  955. string transName = this.TransformationName;
  956. // If selected item is set
  957. if (SPDataSource.IsSelected && !String.IsNullOrEmpty(this.SelectedItemTransformationName))
  958. {
  959. transName = this.SelectedItemTransformationName;
  960. }
  961. TransformationInfo ti = TransformationInfoProvider.GetTransformation(transName);
  962. if ((caml != null) && (ti != null))
  963. {
  964. // Check it is XSLT transformation
  965. if (ti.TransformationType != TransformationTypeEnum.Xslt)
  966. {
  967. ShowError(string.Format(GetString("sharepoint.XSL"), ti.TransformationFullName));
  968. return;
  969. }
  970. try
  971. {
  972. ltlTransformedOutput.Text = SharePointFunctions.TransformCAML(caml, ti);
  973. }
  974. catch (Exception ex)
  975. {
  976. ShowError(string.Format(GetString("sharepoint.XSLTError") + ResHelper.Colon + " " + ex.Message ));
  977. }
  978. }
  979. }
  980. }
  981. /// <summary>
  982. /// Load transformations with dependence on current datasource type and datasource type.
  983. /// </summary>
  984. protected void LoadTransformations()
  985. {
  986. CMSBaseDataSource dataSource = this.SPDataSource as CMSBaseDataSource;
  987. if ((dataSource != null) && (dataSource.IsSelected) && (!String.IsNullOrEmpty(this.SelectedItemTransformationName)))
  988. {
  989. this.BasicDataList.ItemTemplate = CMSDataProperties.LoadTransformation(this, this.SelectedItemTransformationName, false);
  990. if (!String.IsNullOrEmpty(this.SelectedItemFooterTransformationName))
  991. {
  992. this.BasicDataList.FooterTemplate = CMSDataProperties.LoadTransformation(this, this.SelectedItemFooterTransformationName, false);
  993. }
  994. else
  995. {
  996. this.BasicDataList.FooterTemplate = null;
  997. }
  998. if (!String.IsNullOrEmpty(this.SelectedItemHeaderTransformationName))
  999. {
  1000. this.BasicDataList.HeaderTemplate = CMSDataProperties.LoadTransformation(this, this.SelectedItemHeaderTransformationName, false);
  1001. }
  1002. else
  1003. {
  1004. this.BasicDataList.HeaderTemplate = null;
  1005. }
  1006. }
  1007. else
  1008. {
  1009. // Apply transformations if they exist
  1010. if (!String.IsNullOrEmpty(this.AlternatingItemTransformationName))
  1011. {
  1012. this.BasicDataList.AlternatingItemTemplate = CMSDataProperties.LoadTransformation(this, this.AlternatingItemTransformationName, false);
  1013. }
  1014. if (!String.IsNullOrEmpty(this.FooterTransformationName))
  1015. {
  1016. this.BasicDataList.FooterTemplate = CMSDataProperties.LoadTransformation(this, this.FooterTransformationName, false);
  1017. }
  1018. if (!String.IsNullOrEmpty(this.HeaderTransformationName))
  1019. {
  1020. this.BasicDataList.HeaderTemplate = CMSDataProperties.LoadTransformation(this, this.HeaderTransformationName, false);
  1021. }
  1022. if (!String.IsNullOrEmpty(this.TransformationName))
  1023. {
  1024. this.BasicDataList.ItemTemplate = CMSDataProperties.LoadTransformation(this, this.TransformationName, false);
  1025. }
  1026. if (!String.IsNullOrEmpty(this.SeparatorTransformationName))
  1027. {
  1028. this.BasicDataList.SeparatorTemplate = CMSDataProperties.LoadTransformation(this, this.SeparatorTransformationName, false);
  1029. }
  1030. }
  1031. }
  1032. /// <summary>
  1033. /// Shows error with message.
  1034. /// </summary>
  1035. /// <param name="message">Message</param>
  1036. private void ShowError(string message)
  1037. {
  1038. Label lblError = new Label();
  1039. lblError.Text = message;
  1040. lblError.CssClass = "ErrorLabel";
  1041. Controls.Add(lblError);
  1042. }
  1043. #endregion
  1044. }