Hello,
I have a grid, and a combobox.
When multiple row are selected in the grid, I test if the values for a certain column are equals, if so, I found this value in the combobox, if not, I set an empty message to the combobox.
Suppose there's 3 rows in my grid :
row1 : a ; g1
row2 : b ; g1
row3 : c ; g3
because g1 != g3, combobox is setting to the empty message ("choose a group").
Now, user can choose the group to put a, b and c. I need to detect the ClientSelectedIndexChanged event. But it seems that passing from empty message to an element of my combobox doesn't raise the event.
Below, the code I used.
Thanks for your help.
Aurore
I have a grid, and a combobox.
When multiple row are selected in the grid, I test if the values for a certain column are equals, if so, I found this value in the combobox, if not, I set an empty message to the combobox.
Suppose there's 3 rows in my grid :
row1 : a ; g1
row2 : b ; g1
row3 : c ; g3
because g1 != g3, combobox is setting to the empty message ("choose a group").
Now, user can choose the group to put a, b and c. I need to detect the ClientSelectedIndexChanged event. But it seems that passing from empty message to an element of my combobox doesn't raise the event.
Below, the code I used.
<tlk:RadAjaxPanel ID="AjaxPnl" runat="server" LoadingPanelID="oAjaxPanel" |
OnAjaxRequest="AjaxPnlRequest"> |
<tlk:RadComboBox ID="oModCombo" runat="server" MarkFirstMatch="true" style="margin-top:5px; float:right; margin-right:5px;" |
EmptyMessage="Choisir un groupe..." AllowCustomText="true" |
OnClientSelectedIndexChanged="oGroupModSelectedIndexChanged" |
OnClientTextChange="oGroupModTextChange" /> |
<tlk:RadGrid ID="modgrid" runat="server" OnNeedDataSource="modgrid_OnNeedDataSource" |
Height="215" Width="95%" style="margin-top:30px;margin-left:5px;" |
AutoGenerateColumns="false" AllowMultiRowSelection="true" > |
<MasterTableView > |
<Columns> |
<tlk:GridBoundColumn DataField="id" Visible="false"/> |
<tlk:GridBoundColumn AllowSorting="true" HeaderText="Modalités" DataField="mod"> |
</tlk:GridBoundColumn> |
<tlk:GridBoundColumn AllowSorting="true" HeaderText="Status" DataField="status"> |
<HeaderStyle Width="150" /> |
</tlk:GridBoundColumn> |
<tlk:GridBoundColumn DataField="gpvalue" ReadOnly="true" Display="false"> |
<HeaderStyle Width="0" /> |
<ItemStyle ForeColor="White" Width="0"/> |
</tlk:GridBoundColumn> |
</Columns> |
</MasterTableView> |
<ClientSettings > |
<Scrolling AllowScroll="true" UseStaticHeaders="true" /> |
<Selecting AllowRowSelect="true" EnableDragToSelectRows="true" /> |
<ClientEvents OnRowSelected="ModalitiesSelected" OnRowDeselected="ModalitiesDeselected" /> |
</ClientSettings> |
</tlk:RadGrid> |
</tlk:RadAjaxPanel> |
<tlk:RadCodeBlock runat="server" ID="rcb2"> |
<script type="text/javascript" language="javascript"> |
function AjaxPnlRequest(requestName) |
{ |
var manager = <%= AjaxPnl.ClientID %>; |
manager.ajaxRequest(requestName); |
} |
</script> |
</tlk:RadCodeBlock> |
var bNotPostback = true; |
var bAllEquals = true; |
var sValue = null; |
var iHandled = -1; |
var bMade = false; |
function ModalitiesSelected() { |
var grid = $find("<%=modgrid.ClientID %>"); |
var MasterTable = grid.get_masterTableView(); |
var selectedRows = MasterTable.get_selectedItems(); |
//alert(iHandled + " " + selectedRows.length); |
if (selectedRows.length == 1) { |
bAllEquals = true; |
iHandled = 1;bMade = false; |
sValue = MasterTable.getCellByColumnUniqueName(selectedRows[0], "gpvalue").innerHTML; |
} |
else { |
var row = selectedRows[selectedRows.length - 1]; |
bMade = false; |
var cell = MasterTable.getCellByColumnUniqueName(row, "gpvalue"); |
bAllEquals = (sValue == cell.innerHTML); |
iHandled += 1; |
} |
window.setTimeout(function() { setCombo(); }, 500); |
} |
function ModalitiesDeselected() { |
var grid = $find("<%=modgrid.ClientID %>"); |
var MasterTable = grid.get_masterTableView(); |
var selectedRows = MasterTable.get_selectedItems(); |
iHandled = selectedRows.length; |
if (iHandled > 0) { |
bMade = false; |
bAllEquals = true; |
sValue = MasterTable.getCellByColumnUniqueName(selectedRows[0], "gpvalue").innerHTML; |
var i = 1; |
while ((i < iHandled) && bAllEquals) { |
var cell = MasterTable.getCellByColumnUniqueName(selectedRows[i], "gpvalue"); |
bAllEquals = (sValue == cell.innerHTML); |
i++; |
} |
setCombo(); |
} |
else { |
var oCombo = $find("<%=oModCombo.ClientID %>"); |
oCombo.clearSelection(); |
oCombo.disable(); |
oCombo.set_emptyMessage(oCombo.get_emptyMessage()); |
} |
} |
function setCombo() { |
var grid = $find("<%=modgrid.ClientID %>"); |
var MasterTable = grid.get_masterTableView(); |
var selectedRows = MasterTable.get_selectedItems(); |
if ((iHandled == selectedRows.length) && (bMade == false)) { |
//alert("setCombo " + iHandled + " " + selectedRows.length); |
bNotPostback = true;bMade = true; |
var oCombo = $find("<%=oModCombo.ClientID %>"); |
oCombo.clearSelection(); |
oCombo.enable(); |
if (bAllEquals) { |
var item = oCombo.findItemByValue(sValue); |
if (item) item.select(); |
} |
else { |
oCombo.set_emptyMessage(oCombo.get_emptyMessage()); |
//oCombo.set_text(oCombo.get_emptyMessage()); |
} |
} |
} |
function oGroupModSelectedIndexChanged(sender, args) { |
if (bNotPostback) bNotPostback = false; |
else { |
var sArg = "oModCombo;"; |
var item = args.get_item(); |
sArg += item.get_text() + ";" + item.get_value(); |
AjaxPnlRequest(sArg); |
} |
} |
function oGroupModTextChange(sender, args) { |
var sArg = "oModCombo;"; |
sArg += sender.get_text() + "; "; |
AjaxPnlRequest(sArg); |
} |
Thanks for your help.
Aurore