114 lines
3.6 KiB
C#
114 lines
3.6 KiB
C#
|
using System.ComponentModel;
|
|||
|
using System.Diagnostics.CodeAnalysis;
|
|||
|
using System.Drawing;
|
|||
|
using System.Globalization;
|
|||
|
using System.Web.DynamicData.Util;
|
|||
|
using System.Web.Resources;
|
|||
|
using System.Web.UI;
|
|||
|
using System.Web.UI.WebControls;
|
|||
|
|
|||
|
namespace System.Web.DynamicData {
|
|||
|
[ToolboxBitmap(typeof(DynamicEntity), "DynamicEntity.bmp")]
|
|||
|
public class DynamicEntity : Control {
|
|||
|
private HttpContextBase _context;
|
|||
|
|
|||
|
[
|
|||
|
DefaultValue(DataBoundControlMode.ReadOnly),
|
|||
|
Category("Behavior"),
|
|||
|
ResourceDescription("DynamicEntity_Mode")
|
|||
|
]
|
|||
|
public DataBoundControlMode Mode {
|
|||
|
get {
|
|||
|
var value = ViewState["Mode"];
|
|||
|
return value != null ? (DataBoundControlMode)value : DataBoundControlMode.ReadOnly;
|
|||
|
}
|
|||
|
set {
|
|||
|
ViewState["Mode"] = value;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[
|
|||
|
DefaultValue(""),
|
|||
|
Category("Behavior"),
|
|||
|
ResourceDescription("DynamicControlFieldCommon_UIHint")
|
|||
|
]
|
|||
|
public string UIHint {
|
|||
|
get {
|
|||
|
return (string)ViewState["UIHint"] ?? String.Empty;
|
|||
|
}
|
|||
|
set {
|
|||
|
ViewState["UIHint"] = value;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
[
|
|||
|
Category("Behavior"),
|
|||
|
DefaultValue(""),
|
|||
|
Themeable(false),
|
|||
|
ResourceDescription("DynamicControlFieldCommon_ValidationGroup")
|
|||
|
]
|
|||
|
public string ValidationGroup {
|
|||
|
get {
|
|||
|
return (string)ViewState["ValidationGroup"] ?? String.Empty;
|
|||
|
}
|
|||
|
set {
|
|||
|
ViewState["ValidationGroup"] = value;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private new HttpContextBase Context {
|
|||
|
get {
|
|||
|
return _context ?? new HttpContextWrapper(HttpContext.Current);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public DynamicEntity() {
|
|||
|
}
|
|||
|
|
|||
|
// for unit testing
|
|||
|
internal DynamicEntity(HttpContextBase context)
|
|||
|
: this() {
|
|||
|
_context = context;
|
|||
|
}
|
|||
|
|
|||
|
[SuppressMessage("Microsoft.Security", "CA2109:ReviewVisibleEventHandlers", MessageId = "0#")]
|
|||
|
protected override void OnLoad(EventArgs e) {
|
|||
|
base.OnLoad(e);
|
|||
|
|
|||
|
if (DesignMode) {
|
|||
|
return;
|
|||
|
}
|
|||
|
|
|||
|
MetaTable table = MetaTableHelper.FindMetaTable(this, Context);
|
|||
|
if (table == null) {
|
|||
|
throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture,
|
|||
|
DynamicDataResources.DynamicEntity_ControlNeedsToExistInAContextSupportingDynamicData,
|
|||
|
this.ID));
|
|||
|
}
|
|||
|
|
|||
|
EntityTemplateFactory entityTemplateFactory = table.Model.EntityTemplateFactory;
|
|||
|
EntityTemplateUserControl entityTemplateControl = entityTemplateFactory.CreateEntityTemplate(table, Mode, UIHint);
|
|||
|
if (entityTemplateControl == null) {
|
|||
|
throw new InvalidOperationException(String.Format(CultureInfo.CurrentCulture,
|
|||
|
DynamicDataResources.DynamicEntity_CantFindTemplate,
|
|||
|
table.Name,
|
|||
|
entityTemplateFactory.TemplateFolderVirtualPath));
|
|||
|
}
|
|||
|
|
|||
|
entityTemplateControl.Mode = Mode;
|
|||
|
entityTemplateControl.ValidationGroup = ValidationGroup;
|
|||
|
entityTemplateControl.Table = table;
|
|||
|
Controls.Add(entityTemplateControl);
|
|||
|
}
|
|||
|
|
|||
|
protected override void Render(HtmlTextWriter writer) {
|
|||
|
if (DesignMode) {
|
|||
|
writer.Write("[" + GetType().Name + "]");
|
|||
|
}
|
|||
|
else {
|
|||
|
base.Render(writer);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|