2017-04-26 8 views
0

こんにちはKenticoのエキスパートkentico新しいフォームフィールドをAPI経由で追加する

私はKentico API経由でいくつかの新しいフォームフィールドを動的に作成する必要があります。私は解決策を見つけましたが、それはKentico 6用であり、私のバージョンでは使用できません(私はKentico 8を使用しています)。

https://devnet.kentico.com/articles/how-to-add-a-new-field-to-a-document-type-using-api

助けてください!

おかげで、 ドゥオン

答えて

3

これは動作するはずです:

string classname = "classname"; 
DataClassInfo dci = DataClassInfoProvider.GetDataClassInfo(classname); 
if (dci != null) 
{ 
    FormInfo fi = new FormInfo(dci.ClassFormDefinition); 
    if (fi != null) 
    { 
     // Field definition 
     FormFieldInfo ffi = new FormFieldInfo(); 
     ffi.Name = "FieldName"; 
     ffi.AllowEmpty = true; 
     ffi.System = false; 
     ffi.FieldType = CMS.FormEngine.FormFieldControlTypeEnum.UploadControl; 
     ffi.Visible = true; 
     ffi.Caption = "Field Caption"; 
     ffi.Enabled = true; 
     // Set whatever properties are relevant to you 

     fi.AddFormItem(ffi); 

     TableManager tm = new TableManager(null); 
     tm.AddTableColumn(dci.ClassTableName, ffi.Name, "uniqueidentifier", true, null); 

     dci.ClassXmlSchema = tm.GetXmlSchema(dci.ClassTableName); 
     dci.ClassFormDefinition = fi.GetXmlDefinition(); 

     // Update DataClassInfo object 
     DataClassInfoProvider.SetDataClassInfo(dci); 

     // Update inherited classes with new field 
     FormHelper.UpdateInheritedClasses(dci); 

    } 
} 

あなたはいつもKentico DevNetのバージョン間のAPIの変更を確認することができます。

関連する問題