whan SPFieldMultiColumn
объект использует метод override BaseFieldControl FieldRenderingControl
он загружает объект, который наследуется от BaseFieldControl
,
Итак, объект, который наследует BaseFieldControl
, имеет метод, который вызывает
protected override void RenderFieldForDisplay(HtmlTextWriter output){}
в этом методе вы можете отобразить элементы управления, которые вам подходят.
Вы можете использовать приведенный ниже пример
namespace SharePointTestApplication
{
public class UserChoiceColumn:SPFieldMultiColumn
{
public UserChoiceColumn(SPFieldCollection fields, string fname)
: base(fields, fname) { }
public UserChoiceColumn(SPFieldCollection fields, string tname, string dname)
: base(fields, tname, dname) { }
public override BaseFieldControl FieldRenderingControl
{
get
{
BaseFieldControl ctr = new UserChoiceColumnControlType();
ctr.FieldName = this.InternalName;
return ctr;
}
}
public override string GetFieldValueAsHtml(object value)
{
SPFieldMultiColumnValue mcv = new SPFieldMultiColumnValue(value.ToString());
return string.Format("{0} , {1}",mcv[0],mcv[1]);
}
}
public class UserChoiceColumnControlType : BaseFieldControl
{
#region Protected Members
protected TextBox TextBox1;
protected TextBox TextBox2;
#endregion
protected override string DefaultTemplateName
{
get
{
return "UserChoiceColumnTemplate";
}
}
protected override void CreateChildControls()
{
base.CreateChildControls();
TextBox1 = (TextBox)this.TemplateContainer.FindControl("TextBox1");
TextBox2 = (TextBox)this.TemplateContainer.FindControl("TextBox2");
}
public override object Value
{
get
{
this.EnsureChildControls();
SPFieldMultiColumnValue mcv = new SPFieldMultiColumnValue(2);
mcv[0] = TextBox1.Text;
mcv[1] = TextBox2.Text;
return mcv;
}
set
{
this.EnsureChildControls();
SPFieldMultiColumnValue mcv = (SPFieldMultiColumnValue)this.ItemFieldValue;
TextBox1.Text = mcv[0];
TextBox2.Text = mcv[1];
}
}
**protected override void RenderFieldForDisplay(HtmlTextWriter output)
{
output.Write("hello world");
// base.RenderFieldForDisplay(output);
}**
}
}