[K2 SmartForms] – Use SmartObject Property in Custom Control (Part I)

สวัสดีครับ กลับมาคราวนี้เราจะมาคุยกันต่อเรื่อง property ของ custom control กัน จาก blog คราวที่แล้วเราได้ลองสร้าง property ที่เป็นแบบทั่วไป (type เป็น string, number, boolean etc.) กันไปแล้ว แต่จะมีอีกคำถามว่า ถ้าเราอยากทำ control ที่ดึงข้อมูลจาก SmartObject ล่ะจะทำได้ยังไงบ้าง?

ccb3-01

นี่แหละหน้าตาแบบที่เราอยากได้

    วิธีการเพิ่มเข้าไปก็จะเหมือนกับแบบทั่วไป คือเพิ่มเข้าไปใน xml schema ของ control ที่เราสร้าง

  • ส่วนแรกเป็นการเพิ่ม DataSourceType ที่น่าสนใจคือ เราต้องระบุ type เป็น “complex” และต้องระบุ serverControlType, InitializeServerControl, ClearServerControl และ ServerControl attribute เข้าไป ซึ่งส่วนนี้จะเป็นการเรียกใช้ control ที่ SmartForms มีมาอยู่แล้ว มาแสดงอยู่ใน property ของ control

<Prop ID=”DataSourceType” mappable=”false” friendlyname=”Type” type=”complex” serverControlType=”property” category=”Data Source” refreshdisplay=”true” InitializeServerControl=”initCommonDataSourceConfig” ClearServerControl=”clearComplexPropertyConfig” ServerControl=”SourceCode.Forms.Controls.Web.PropertyConfiguration.AssociationPropertyConfig,SourceCode.Forms.Controls.Web” />

  • ใน option ของการเลือก SmartObject จะมีให้กำหนดเป็น static list ได้ property FixedListItems จะเป็นตัวที่ไว้ใช้เก็บ static list ที่เรากำหนด

<Prop ID=”FixedListItems” mappable=”false” friendlyname=”Items” type=”string” serverControlType=”property” category=”Data Source” ReadOnly=”true” />

  • AssociationSO ไว้เก็บ SmartObject ที่เราเลือกใช้

<Prop ID=”AssociationSO” mappable=”false” friendlyname=”SmartObject” type=”string” serverControlType=”smartobject” category=”Data Source” ReadOnly=”true” />

  • AssociationMethod ไว้เก็บ method ที่เราเลือกใช้

<Prop ID=”AssociationMethod” mappable=”false” friendlyname=”Method” type=”string” serverControlType=”listmethod” category=”Data Source” ReadOnly=”true” />

  • ValueProperty ไว้เก็บ property ที่เราเลือกมาเป็น value ของ control

<Prop ID=”ValueProperty” mappable=”false” friendlyname=”Value” type=”string” serverControlType=”property” category=”Data Source” ReadOnly=”true” />

  • DisplayTemplate ไว้เก็บ property ที่เราเลือกมาเป็น display ของ control

<Prop ID=”DisplayTemplate” mappable=”false” friendlyname=”Display” type=”string” serverControlType=”property” category=”Data Source” ReadOnly=”true” />

ที่ใส่ไปด้านบนจะเป็นเฉพาะส่วนที่เราต้องการใช้งาน แต่จริงๆ แล้วยังมี property ส่วนอื่นที่ใช้ได้เพิ่มเติม อย่างเช่น lookup ข้อมูลจาก SmartObject ที่ทำ Association ไว้ หรือ filter ข้อมูลจากการ list control อื่น ซึ่งยังไม่พูดถึงตอนนี้ ถ้าเราใส่เพิ่มเข้าไปใน file .xml ของ control แล้ว ให้ลอง build แล้ว deploy ดู เมื่อลอง add control เข้ามาแล้วไปดูที่ property จะเห็นรูปตามด้านล่าง

ccb3-02

เมื่อกดปุ่ม … ก็จะได้ popup ส่วนที่เป็นการเลือก SmartObject ขึ้นมา จะเห็นว่า มีให้เลือกเป็น static list และเลือกจาก SmartObject

ccb3-03

เมื่อเราเลือก SmartObject ที่ต้องการแล้วกดปุ่ม OK  ข้อมูลที่เลือกไว้ก็จะแสดงอยู่ในหน้า property

ccb3-04

มาถึงตรงนี้ เราก็จะได้ control ที่สามารถเก็บ SmartObject ที่ต้องการใช้ได้แล้ว ส่วนการเอาค่าที่เก็บไว้ไปใช้งานเราจะมาต่อกันรอบหน้าครับ 🙂

Advertisements

2 thoughts on “[K2 SmartForms] – Use SmartObject Property in Custom Control (Part I)

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s