1. 程式人生 > >自定義webpart引數---動態下拉列表

自定義webpart引數---動態下拉列表

        本篇文章介紹的是在sharepoint 2010中用VS 2010開發自定義webpart。

        自定義開發的webpart分為兩種:帶引數的和不帶引數的;帶引數的分為需要繫結外部資料的和不需要繫結外部資料的。

        不帶引數的webpart

                這種webpart開發最簡單,只需要將webpart頁面的後臺邏輯處理完就可以,不需要外來的引數。

        不需要繫結外部資料的帶引數的webpart

                這種webpart開發,需要在繼承system.web.ui.webcontrols.webparts.webpart的類中增加引數,即如下形式的程式碼:

                     [Personalizable(),
                     WebDisplayNameAttribute("FullUrl"),
                     WebBrowsable]
                     public string FullUrl
                     {
                         get;
                         set;
                     }

                也可增加emun型別的下拉列表引數(但是其中的引數是在程式碼中寫死的)。

       需要繫結外部資料的帶引數的webpart

                這種webpart的開發相對比較麻煩,除了需要在繼承system.web.ui.webcontrols.webparts.webpart的類中增加引數之外,還需要在繼承system.web.ui.webcontrols.webparts.Editorpart的類中繫結外來資料並傳給繼承system.web.ui.webcontrols.webparts.webpart的類中的引數。

               在繼承system.web.ui.webcontrols.webparts.Editorpart的類中,需要過載方法:

                       1. protected override void CreateChildControls():該方法是用來構建編輯webpart時選擇引數的頁面;

                       2.public override void SyncChanges():該方法是用來繫結外部資料到webpart編輯頁面的控制元件中的;

                       3.public override bool ApplyChanges():該方法是用來將編輯頁面中控制元件的值回傳給繼承system.web.ui.webcontrols.webparts.webpart的類中的引數。

               例子如下:

    [ToolboxItemAttribute(false)]
    public class Statistics_Monthly : WebPart
    {

        [Personalizable(),
        WebDisplayNameAttribute("工作量統計類別")]
        public string BisicCategory
        {
            get;
            set;
        }

        [Personalizable(),
        WebDisplayNameAttribute("工作量統計時間")]
        public string StatisticsTime
        {
            get;
            set;
        }

        // 當更改可視 Web 部件專案項時,Visual Studio 可能會自動更新此路徑。
        private const string _ascxPath = @"~/_CONTROLTEMPLATES/StatisticsWebPart_Monthly/Statistics_Monthly/Statistics_MonthlyUserControl.ascx";

        protected override void CreateChildControls()
        {
            Control control = Page.LoadControl(_ascxPath);

            if (control != null)
            {
                ((Statistics_MonthlyUserControl)control).webPart = this;
            }

            Controls.Add(control);
        }

        public override EditorPartCollection CreateEditorParts()
        {
            EditorPartCollection baseParts = base.CreateEditorParts();
            List<EditorPart> editorParts = new List<EditorPart>(1);
            EditorPart part = new Statistics_Monthly_Edit();
            part.ID = this.ID + "_Statistics_Monthly_Editor";
            part.Title = "Statistics_Monthly變數選擇";
            editorParts.Add(part);
            return new EditorPartCollection(baseParts, editorParts);
        }

    }

    public class Statistics_Monthly_Edit : EditorPart
    {

        protected Label label_BasicCategory;
        protected DropDownList ddl_BasicCategory;
        protected Label label_Time;
        protected DropDownList ddl_Year;
        protected Label label_Year;
        protected DropDownList ddl_Month;
        protected Label label_Month;

        protected override void CreateChildControls()
        {
            base.CreateChildControls();

            this.label_BasicCategory = new Label();
            this.label_BasicCategory.Text = "工作量統計型別:";
            this.ddl_BasicCategory = new DropDownList();
            this.ddl_BasicCategory.AutoPostBack = true;
            this.ddl_BasicCategory.SelectedIndexChanged += new EventHandler(ddl_BasicCategory_SelectedIndexChanged);

            this.label_Time = new Label();
            this.label_Time.Text = "請選擇顯示時間:";
            this.ddl_Year = new DropDownList();
            this.ddl_Year.AutoPostBack = true;
            this.ddl_Year.SelectedIndexChanged += new EventHandler(ddl_Year_SelectedIndexChanged);
            this.label_Year = new Label();
            this.label_Year.Text = "年";
            this.ddl_Month = new DropDownList();
            this.ddl_Month.AutoPostBack = true;
            this.ddl_Month.SelectedIndexChanged += new EventHandler(ddl_Month_SelectedIndexChanged);
            this.label_Month = new Label();
            this.label_Month.Text = "月";

            Table tb = new Table();

            TableRow row = new TableRow();
            TableCell cell1 = new TableCell();
            TableCell cell2 = new TableCell();
            cell1.Controls.Add(this.label_BasicCategory);
            cell2.Controls.Add(this.ddl_BasicCategory);
            row.Cells.Add(cell1);
            row.Cells.Add(cell2);
            tb.Rows.Add(row);

            row = new TableRow();
            cell1 = new TableCell();
            cell2 = new TableCell();
            cell1.Controls.Add(this.label_Time);
            cell2.Controls.Add(this.ddl_Year);
            cell2.Controls.Add(this.label_Year);
            cell2.Controls.Add(this.ddl_Month);
            cell2.Controls.Add(this.label_Month);
            row.Cells.Add(cell1);
            row.Cells.Add(cell2);
            tb.Rows.Add(row);

            this.Controls.Add(tb);
        }

        protected void ddl_BasicCategory_SelectedIndexChanged(object sender, EventArgs e)
        {
           
        }

        protected void ddl_Year_SelectedIndexChanged(object sender, EventArgs e)
        {
           
        }

        protected void ddl_Month_SelectedIndexChanged(object sender, EventArgs e)
        {
           
        }

        public override bool ApplyChanges()
        {
            this.EnsureChildControls();
            Statistics_Monthly webpart = this.WebPartToEdit as Statistics_Monthly;
            if (webpart == null)
            {
                return false;
            }
            else
            {
                if (this.ddl_BasicCategory.SelectedItem != null)
                {
                    webpart.BisicCategory = this.ddl_BasicCategory.SelectedValue;
                }
                else
                {
                    webpart.BisicCategory = string.Empty;
                }

                if ((this.ddl_Year.SelectedItem != null) && (this.ddl_Month.SelectedItem != null))
                {
                    webpart.StatisticsTime = this.ddl_Year.SelectedValue + "/" + this.ddl_Month.SelectedValue;
                }
                else
                {
                    webpart.StatisticsTime = string.Empty;
                }
                return true;
            }
        }

        public override void SyncChanges()
        {           
           EnsureChildControls();
           Statistics_Monthly webpart = this.WebPartToEdit as Statistics_Monthly;
           if (webpart != null)
           {
               InitBasicCategory(webpart);
               InitStatisticsTime(webpart);
           }
        }

        
        private void InitBasicCategory(Statistics_Monthly webpart)
        {

           從外部獲取值並繫結到this.ddl_BasicCategory下拉列表中。
        }

        private void InitStatisticsTime(Statistics_Monthly webpart)
        {

           從外部獲取值並繫結到this.ddl_Year和this.ddl_Month的dropdownlist中的值。
        }

   }

相關推薦

定義webpart引數---動態列表

        本篇文章介紹的是在sharepoint 2010中用VS 2010開發自定義webpart。         自定義開發的webpart分為兩種:帶引數的和不帶引數的;帶引數的分為需要繫結外部資料的和不需要繫結外部資料的。         不帶引數的webp

html 中可以定義輸入的 select 列表

在專案開發中,往往有這種需求:那就是需要下拉選擇已有的資料列表,當沒有自己需要的資料時,往往需要去管理這些列表資料的畫面去新增,或者在下拉列表後面放一個快捷按鈕,先新增,然後再選。 那麼問題就來了,如果按照上面的操作,往往需要很多步驟,能不能當沒有可選專案時,直接在下拉

topgp combobox動態列表

mit ces ... byte mat date limit update conf 用過TOPGP的都知道,畫面上的下拉列表是寫死在畫面檔上的,每個程序都要手動去維護一遍,很惡心很麻煩,鼎捷也發現了這個問題,在T100上面就全部使用了動態的方式顯示,具體的操作方式就是可

Ajax動態列表

 許多頁面上都涉及有下拉框,即select標籤。對於簡單的下拉框,被選擇的資料是不需要改變的,我們可以用寫死。這樣下拉框的資料永遠都是那幾條。   示例: 1 <select> 2 <option>資訊一</option

Android 定義view:實現ListView的視差特效

一、概述: 現在流型的APP如微信朋友圈,QQ空間,微博個人展示都有視差特效的影子。 如圖:下拉圖片會產生圖片拉昇的效果,放手後圖片有彈回到原處: 那我們如何實現呢? 1)重寫ListView控制元件: 2)重寫裡面的overScrollBy方法

jsp中定義標籤自動載入框內容

第一步:在web專案下的web-inf的tlds目錄下,新建一個配置檔案,名字為relation.tld,內容如下: 自定義標籤的字首為relation(由short-name標籤決定),屬性有saveField(要儲存到資料庫的欄位名),value(要被選中的資料值)

jq定義多選列表

多選 img 插件 國家 http 分享 class 下拉 blog 多選選擇國家插件 https://gitee.com/richard1015/dropDownList jq自定義多選下拉列表框

WPF 定義列表

LV mage png gif ces hid IT orm false XAML代碼: <Popup x:Name="popupStrategy" StaysOpen="False" PopupAnimation="Scroll" Width="190"

ABAP如何定義列表 .

app class AD 定義 fault pre amp 列表 nbsp 1. 在選擇屏幕上添加下拉列表控件, 代碼如下: PARAMETERS: auart LIKE vapma-auart AS LISTBOX VISIBLE LENGTH 6

WPF列表定義樣式

WPF中國自定義Combobox樣式 <Window x:Class="ComboBoxDemo.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:

wxpython定義列表

自定義wxpython下拉列表框,支援修改邊框顏色,按鈕圖示的動態變換 原理同前兩片文章一樣,使用了兩個wx.staticText做邊框,一個文字框來顯示下拉列表的資料,和一個圖片按鈕,實現下拉的標誌,和一個自帶的列表框, 影藏該列表框,不要原來的樣式,這裡只需要使用它的展示列表的資料功能  

定義列表select樣式

jq: $(".select-head").each(function(){ $(this).click(function(event) {//自定義下拉列表框顯示和隱藏console.log(0);$(this).siblings("ul.option").toggleC

Android中Spinner列表(使用ArrayAdapter和定義Adapter實現)

     今天學習了Spinner元件,使用Spinner相當於從下拉列表中選擇專案,下面演示一下Spinner的使用(分別使用ArrayAdapter和自定義Adapter實現) (一):使用Arr

支援中文/全拼/簡拼以及定義篩選的列表

簡介 fxss-autoSelectSearch是一款jquery外掛,支援中文/全拼/簡拼等多種搜尋方式的搜尋外掛,還支援清空搜尋列表、強制指定某個搜尋框選擇某項option。 使用 首先必須引入jQuery檔案、fxss-autoSelectS

FreeMarker定義TemplateDirectiveModel之重複提交&列表

重複提交標籤 public class AvoidRepeatSubmitTag implements TemplateDirectiveModel { public AvoidRepeatSubmitTag() { } public

定義Spinner(列表)五步走

在Android的UI開發中,Spinner(下拉列表)總是可以用到的,一個簡單的自定義Spinner製作我們只需要記住這重要的五步,一個Spinner就可以應用而生了。 (1)新建一個Android工程,名字為SpinnerTest1。修改layout下的main.xml

分別在javascript和JSP中動態設置列表默認值

技術 bsp 分享 列表 tex align scrip jsp頁面 sin 一.JavaScript中動態設置select標簽中<option>選項的默認值: 比如,要完成下邊這個下拉列表的動態顯示,並且當進行前後翻頁時,下拉列表中的值自動更新為當前頁碼

ExtJS4列表框寬度適應

/** * 獲取下拉列表框定義 */ getBoxTextEditor: function (box_text_store) { //定義了下拉列表框 var editor = new Ext

C# 動態顯示列表的資料

public List<UserInfo> list = new List<UserInfo>(); //查詢採購員 SqlConnection conn = new SqlConnection("Server=.;Database=JiYunMaterials

jQuery動態新增列表選項

不說了,直接上程式碼: <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String