There is no standard functionality
You can try the code form the following sample but i am not sure that it will work in all cases
<%@ Page Language="C#" AutoEventWireup="True" %>
<%@ Register assembly="Ext.Net" namespace="Ext.Net" tagprefix="ext" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<ext:ResourcePlaceHolder runat="server" Mode="ScriptFiles">
</ext:ResourcePlaceHolder>
<script type="text/javascript">
Ext.override(Ext.form.Field, {
markDirty: function () {
if (this.isDirty() && this.originalValue != this.getValue()) {
if (!this.dirtyIcon) {
var elp = this.el.parent('.x-form-element');
this.dirtyIcon = elp.createChild({
cls: 'x-grid3-dirty-cell'
});
if (Ext.isIE) {
this.dirtyIcon.position("absolute", 0, -5, 0);
} else {
this.dirtyIcon.position("absolute", 0, 0, 0);
}
this.dirtyIcon.setSize(5, 5);
}
this.alignDirtyIcon();
this.dirtyIcon.show();
this.on('resize', this.alignDirtyIcon, this);
} else {
if (this.dirtyIcon) {
this.dirtyIcon.hide();
}
}
},
initEvents: Ext.form.Field.prototype.initEvents.createSequence(function () {
this.el.on("change", this.markDirty, this);
this.on("change", this.markDirty, this);
}),
alignDirtyIcon: function () {
this.dirtyIcon.alignTo(this.el, 'tl', [0, 0]);
}
});
Ext.override(Ext.form.BasicForm, {
clearDirty: function () {
this.callFieldMethod("markDirty");
}
});
</script>
</head>
<body>
<form id="form1" runat="server">
<ext:ResourceManager runat="server"/>
<ext:FormPanel runat="server" Width="400" Height="300" Title="Form">
<Items>
<ext:TextField runat="server" />
<ext:TextField runat="server" />
<ext:TextField runat="server" />
<ext:Checkbox runat="server" />
<ext:ComboBox runat="server">
<Items>
<ext:ListItem Text="Item 1" />
<ext:ListItem Text="Item 2" />
</Items>
</ext:ComboBox>
</Items>
</ext:FormPanel>
</form>
</body>
</html>