ImageFieldDefinition
Hello,
I have one question. I have some custom content and i want to add image selector to backend definition. ImageFieldElement has done the work: selects image and imageid is saved properly.
But when I want to edit that same item again, image is not loaded in imagefield.
The code for definition is:
var iconImageField =
new
ImageFieldElement(mainSection.Fields)
ID =
"iconImageFieldControl"
,
DataFieldName =
"IconImageId"
,
DisplayMode = displayMode,
Title =
"IconImage"
,
CssClass =
"sfFormSeparator"
,
WrapperTag = HtmlTextWriterTag.Li,
ResourceClassId =
typeof
(ProductsResources).Name,
DataFieldType =
typeof
(Guid),
FieldType =
typeof
(ImageField)
;
mainSection.Fields.Add(iconImageField);
I found temporary solution:
I extended ImageField control, and change setvalue function in javascript:
public
class
GuidImageField : ImageField
#region Private Fields and constants
internal
const
string
script =
"GuidImageField.js"
;
#endregion
protected
override
Type ResourcesAssemblyInfo
get
return
Config.Get<ControlsConfig>().ResourcesAssemblyInfo;
public
override
IEnumerable<System.Web.UI.ScriptReference> GetScriptReferences()
var assemblyName =
typeof
(GuidImageField).Assembly.FullName;
var scripts =
new
List<ScriptReference>(
base
.GetScriptReferences())
new
ScriptReference(GuidImageField.script, assemblyName),
;
return
scripts;
_resolveImageFromGuid:
function
(itemId)
var
clientManager =
new
Telerik.Sitefinity.Data.ClientManager();
var
urlParams =
"itemType"
:
"Telerik.Sitefinity.Libraries.Model.Image"
,
"filter"
:
"Id=\""
+ itemId +
"\" AND Status = Live"
;
if
(
typeof
(
this
._loadImageSuccessDelegate) ===
"undefined"
)
this
._loadImageSuccessDelegate = Function.createDelegate(
this
,
this
._loadImageSuccessHandler);
this
._loadImageFailureDelegate = Function.createDelegate(
this
,
this
._loadImageFailureHandler);
clientManager.InvokeGet(
this
._imageServiceUrl, urlParams,
null
,
this
._loadImageSuccessDelegate,
this
._loadImageFailureDelegate,
this
);
this
._selectedImageItem =
null
;
this
._imageElement.src =
this
._defaultSrc;
,
set_value:
function
(value)
if
(
this
._boundOnServer)
return
;
if
(value)
this
._resolveImageFromGuid(value);
else
if
(!value)
this
._selectedImageItem =
null
;
this
._imageElement.src =
this
._defaultSrc;
if
(
this
._imageElement.src ==
""
)
if
(
this
._defaultSrc)
this
._imageElement.src =
this
._defaultSrc;
this
.raisePropertyChanged(
"value"
);
this
._valueChangedHandler();
Hi,
The ImageField doesn`t have a way to modify already created image, and to modify a custom solution is needed where to remove the current image. This can be done also with creating a button trough javascript that will remove selected image by placing selected image id to be empty Guid.
Regards,
Stanislav Velikov
Telerik