public static void BindControl(ICaisisInputControl control, IBusinessObject b, string fieldname) { // special case: data bound controls (select, radio list, check box list, etc... get values set late bound if (control is System.Web.UI.WebControls.ListControl) { var setter = new EventHandler((o, e) => { control.Value = b[fieldname].ToString(); if (b.IsLocked) { control.Enabled = false; } }); var iListControl = control as System.Web.UI.WebControls.ListControl; iListControl.DataBound += setter; } else { var setter = new CaisisEventHandler((o, e) => { control.Value = b[fieldname].ToString(); if (b.IsLocked) { control.Enabled = false; } }); control.PreRender += setter; } // track control change during POSTs control.ValueChanged += new CaisisEventHandler((o, e) => b[fieldname] = control.Value); // control.ValueChanged += new CaisisEventHandler((o, e) => DebugHack(o, o.Value)); }
/// <summary> /// Returns a CaisisEventHandler which is used for triggering "dirty" functinality for an ICaisisInputControl /// </summary> /// <param name="srcControl"></param> /// <param name="updateEvent"></param> /// <returns></returns> private CaisisEventHandler GetValueChangeEventHandler(ICaisisInputControl srcControl, DxImageFindingEvent updateEvent) { CaisisEventHandler changeEvent = new CaisisEventHandler(delegate(ICaisisInputControl a, EventArgs b) { if (!fieldToUpdateMap.ContainsKey(a)) { fieldToUpdateMap.Add(a, updateEvent); } }); return(changeEvent); }