簡易代碼之家

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            157 Posts :: 2 Stories :: 57 Comments :: 0 Trackbacks
          最后實現(xiàn)效果如下:

          設(shè)置欄如下:

          解決方案結(jié)構(gòu)如下:


          fldtypes_RoyCustomField.xml 內(nèi)容如下:
          <?xml version="1.0" encoding="utf-8" ?>
          <FieldTypes>
            
          <FieldType>
              
          <Field Name="TypeName">RoyCustomField</Field>
              
          <Field Name="ParentType">Text</Field>
              
          <Field Name="TypeDisplayName">RoyCustomField</Field>
              
          <Field Name="TypeShortDescription">RoyCustomField</Field>
              
          <Field Name="UserCreatable">TRUE</Field>
              
          <Field Name="FieldTypeClass">RoyCustomField.RoyCustomField,$SharePoint.Project.AssemblyFullName$</Field>
            
          </FieldType>
          </FieldTypes>

          RoyCustomField.cs 內(nèi)容如下:
          using Microsoft.SharePoint;
          using Microsoft.SharePoint.WebControls;
          using System.Web.UI.WebControls;
          using System.Web.UI;
          using System;
          namespace RoyCustomField
          {
              
          public class RoyCustomField : SPFieldText
              {
                  
          public RoyCustomField(SPFieldCollection field, string strFieldName)
                      : 
          base(field, strFieldName)
                  {
                  }
                  
          public RoyCustomField(SPFieldCollection field, string strFieldName, string strDispName)
                      : 
          base(field, strFieldName, strDispName)
                  {
                  }
                      

                  
          public override BaseFieldControl FieldRenderingControl
                  {
                      
          get
                      {
                          BaseFieldControl fc 
          = new RoyText();
                          fc.FieldName 
          = this.InternalName;
                          
          return fc;
                      }
                  }
              }


              
          public class RoyText : BaseFieldControl
              {

                  
          private DropDownList _ddlProvince;
                  
          private DropDownList _ddlCity;
                  
          #region Province of autoPostBack
                  
          void Province_SelectedIndexChanged(object sender, EventArgs e)
                  {
                      _ddlCity.Items.Clear();
                      
          if (_ddlProvince.SelectedValue.ToString() == "河北省")
                      {
                          _ddlCity.Items.Add(
          new ListItem("石家莊市""石家莊市"));
                      }
                      
          else if (_ddlProvince.SelectedValue.ToString() == "山東省")
                      {
                          _ddlCity.Items.Add(
          new ListItem("濟南市""濟南市"));
                      }
                      
          else
                      {
                          _ddlCity.Items.Add(
          new ListItem("北京市""北京市"));
                      }
                  }
                  
          #endregion
                  
          protected override void CreateChildControls()
                  {

                      
          base.CreateChildControls();
                      
          this.TemplateContainer.FindControl("_ddlProvince");
                      _ddlProvince 
          = new DropDownList();
                      _ddlProvince.Items.Add(
          new ListItem("河北省""河北省"));
                      _ddlProvince.Items.Add(
          new ListItem("山東省""山東省"));

                      _ddlProvince.AutoPostBack 
          = true;
                      _ddlProvince.SelectedIndexChanged 
          += Province_SelectedIndexChanged;
                      
          this.Controls.Add(_ddlProvince);
                      
          this.Controls.Add(new LiteralControl(" - "));
                      
          this.TemplateContainer.FindControl("_ddlCity");
                      _ddlCity 
          = new DropDownList();
                      _ddlCity.Items.Add(
          new ListItem("石家莊市""石家莊市"));
                      _ddlCity.Items.Add(
          new ListItem("濟南市""濟南市"));
                      
          this.Controls.Add(_ddlCity);
                  }

                  
                  
          public override object Value
                  {
                      
          get
                      {
                          
          this.EnsureChildControls();
                          
          return _ddlProvince.Text+"-"+_ddlCity.Text;
                      }
                      
          set
                      {
                          
          string fv = (string)this.ItemFieldValue;
                          
          if (fv.Contains("-"))
                          {
                              
          string[] all = fv.Split('-');
                              _ddlProvince.Text 
          = all[0];
                              _ddlCity.Text 
          = all[1];
                          }
                      }
                  }
              }
          }

          注意事項:

          1.xml的文件名必須以fldtypes_開頭,否則不能識別。

          2.如果要設(shè)置默認值請Override DefaultValue,如果要驗證格式是否正確請Override GetValidatedString。


          本文參考:http://www.cnblogs.com/Roy_Cao/archive/2012/08/14/2637542.html 
          posted on 2013-07-02 10:09 Jakin.zhou 閱讀(375) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 资溪县| 吉安市| 江口县| 峨边| 余干县| 香格里拉县| 山东省| 金乡县| 万年县| 荆州市| 龙泉市| 云林县| 隆回县| 德兴市| 霍林郭勒市| 潮州市| 海林市| 云阳县| 巴林左旗| 五指山市| 中阳县| 大渡口区| 阿巴嘎旗| 灵宝市| 城固县| 新河县| 南康市| 玉溪市| 深泽县| 兰西县| 清流县| 明光市| 大田县| 湖州市| 抚顺市| 大石桥市| 页游| 西安市| 罗田县| 平远县| 和龙市|