Currently, I have a multiselect that has a click directevent. It fires when selecting something, but I need it to also fire when unselecting it. Is this possible? I basically want to disable a button when no items are selected.
Printable View
Currently, I have a multiselect that has a click directevent. It fires when selecting something, but I need it to also fire when unselecting it. Is this possible? I basically want to disable a button when no items are selected.
Hi,
I'd suggest you to use Change event.
Example
Code:<Change Handler="if (Ext.isEmpty(newValue)) {
alert('Empty');
} else {
alert(newValue);
}" />
I tried the change event, but it did the same thing. It fired when selecting an item, but did not when unselecting it.
Well, it fires in both cases, see the sample.
Example
Code:<%@ Page Language="C#" %>
<%@ 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>Ext.Net Example</title>
<script type="text/javascript">
var onChange = function (ms, newValue, oldValue) {
newValue.split(",");
oldValue.split(",");
if (oldValue.length < newValue.length) {
alert("Item " + newValue[newValue.length - 1] + " is selected.");
} else {
alert("Item " + oldValue[oldValue.length - 1] + " is deselected.");
}
}
</script>
</head>
<body>
<form runat="server">
<ext:ResourceManager runat="server" />
<ext:MultiSelect runat="server">
<Items>
<ext:ListItem Value="1" Text="Item 1" />
<ext:ListItem Value="2" Text="Item 2" />
</Items>
<Listeners>
<Change Fn="onChange" />
</Listeners>
</ext:MultiSelect>
</form>
</body>
</html>
Ok. I've confirmed that it does fire when unselecting an item by clicking directly on the item, but if I click below in the white space, it unselects everything, but nothing fires.
Confirmed.
I can suggest to catch the "containerclick" event of MultiSelect's view.
Example
Code:<%@ Page Language="C#" %>
<%@ 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>Ext.Net Example</title>
<script type="text/javascript">
var onChange = function (ms, newValue, oldValue) {
newValue.split(",");
oldValue.split(",");
if (oldValue.length < newValue.length) {
alert("Item " + newValue[newValue.length - 1] + " is selected.");
} else {
alert("Item " + oldValue[oldValue.length - 1] + " is deselected.");
}
}
var onAfterRender = function () {
this.view.on('containerclick', function () {
Ext.Msg.alert("", "No selections");
});
}
</script>
</head>
<body>
<form runat="server">
<ext:ResourceManager runat="server" />
<ext:MultiSelect runat="server">
<Items>
<ext:ListItem Value="1" Text="Item 1" />
<ext:ListItem Value="2" Text="Item 2" />
</Items>
<Listeners>
<Change Fn="onChange" />
<AfterRender Fn="onAfterRender" />
</Listeners>
</ext:MultiSelect>
</form>
</body>
</html>
i need to tie this to a directevent handler on the server side. Is there any way to do this?
Well, you can use hidden buttons and .fireEvent().
But I would use DirectMethods.
I used DirectMethods. Worked great. Thanks!