Oct 13, 2009, 10:28 AM
[CLOSED] Set value in linked ComboBoxs from AjaxMethod
Hi
How do I set values in linked ComboBoxes?
Please see example code
Regards
Mikael
<%@ Page Language="C#" %>
<%@ Register Assembly="Coolite.Ext.Web" Namespace="Coolite.Ext.Web" 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 id="Head1" runat="server">
<script type="text/javascript">
</script>
<title></title>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!Ext.IsAjaxRequest)
{
object data = new object[]
{
new object[]{"1","Item1"},
new object[]{"2","Item2"},
new object[]{"3","Item3"},
new object[]{"4","Item4"},
new object[]{"5","Item5"}
};
StoreCombo1.DataSource = data;
StoreCombo1.DataBind();
}
if (!this.IsPostBack)
{
//cbCombo1.SelectedItem.Value = "3";
//StoreCombo1.CustomConfig.Add(new ConfigItem("withPredefined", "true", ParameterMode.Raw));
//cbCombo2.SelectedItem.Value = "3_3";
//StoreCombo2.CustomConfig.Add(new ConfigItem("withPredefined", "true", ParameterMode.Raw));
//cbCombo3.SelectedItem.Value = "3_3_3";
//StoreCombo3.CustomConfig.Add(new ConfigItem("withPredefined", "true", ParameterMode.Raw));
}
}
[AjaxMethod]
public void SelectValue()
{
cbCombo1.SelectedItem.Value = "3";
StoreCombo1.CustomConfig.Add(new ConfigItem("withPredefined", "true", ParameterMode.Raw));
cbCombo2.SelectedItem.Value = "3_3";
StoreCombo2.CustomConfig.Add(new ConfigItem("withPredefined", "true", ParameterMode.Raw));
cbCombo3.SelectedItem.Value = "3_3_3";
StoreCombo3.CustomConfig.Add(new ConfigItem("withPredefined", "true", ParameterMode.Raw));
}
protected void LoadCombo2s(object sender, StoreRefreshDataEventArgs e)
{
string value = cbCombo1.SelectedItem.Value;
object data = new object[]
{
new object[]{value + "_1","Item" + value + "_1"},
new object[]{value + "_2","Item" + value + "_2"},
new object[]{value + "_3","Item" + value + "_3"},
new object[]{value + "_4","Item" + value + "_4"},
new object[]{value + "_5","Item" + value + "_5"}
};
StoreCombo2.DataSource = data;
StoreCombo2.DataBind();
}
protected void LoadCombo3s(object sender, StoreRefreshDataEventArgs e)
{
string value = cbCombo2.SelectedItem.Value;
object data = new object[]
{
new object[]{value + "_1","Item" + value + "_1"},
new object[]{value + "_2","Item" + value + "_2"},
new object[]{value + "_3","Item" + value + "_3"},
new object[]{value + "_4","Item" + value + "_4"},
new object[]{value + "_5","Item" + value + "_5"}
};
StoreCombo3.DataSource = data;
StoreCombo3.DataBind();
}
protected void LoadCombo4s(object sender, StoreRefreshDataEventArgs e)
{
string value = cbCombo3.SelectedItem.Value;
object data = new object[]
{
new object[]{value + "_1","Item" + value + "_1"},
new object[]{value + "_2","Item" + value + "_2"},
new object[]{value + "_3","Item" + value + "_3"},
new object[]{value + "_4","Item" + value + "_4"},
new object[]{value + "_5","Item" + value + "_5"}
};
StoreCombo4.DataSource = data;
StoreCombo4.DataBind();
}
</script>
</head>
<body>
<form id="form1" runat="server">
<ext:ScriptManager ID="ScriptManager1" runat="server">
</ext:ScriptManager>
<ext:Store ID="StoreCombo1" runat="server" AutoLoad="true">
<Reader>
<ext:ArrayReader ReaderID="Combo1Id">
<Fields>
<ext:RecordField Name="Combo1Id" Type="String" />
<ext:RecordField Name="Combo1Name" Type="String" />
</Fields>
</ext:ArrayReader>
</Reader>
<Listeners>
<Load Handler="if(this.initialized || !this.withPredefined){ #{cbCombo1}.setValue(this.getAt(0).data[#{cbCombo1}.valueField]);#{StoreCombo2}.reload();};this.initialized = true;"
Single="false" />
</Listeners>
</ext:Store>
<ext:Store ID="StoreCombo2" runat="server" AutoLoad="false" OnRefreshData="LoadCombo2s">
<Reader>
<ext:ArrayReader ReaderID="Combo2Id">
<Fields>
<ext:RecordField Name="Combo2Id" Type="String" />
<ext:RecordField Name="Combo2Name" Type="String" />
</Fields>
</ext:ArrayReader>
</Reader>
<Listeners>
<Load Handler="if(this.initialized || !this.withPredefined){#{cbCombo2}.setValue(#{cbCombo2}.store.getAt(0).get('Combo2Id'));#{StoreCombo3}.reload();}; this.initialized = true;" />
</Listeners>
</ext:Store>
<ext:Store ID="StoreCombo3" runat="server" AutoLoad="false" OnRefreshData="LoadCombo3s">
<Reader>
<ext:ArrayReader ReaderID="Combo3Id">
<Fields>
<ext:RecordField Name="Combo3Id" Type="String" />
<ext:RecordField Name="Combo3Name" Type="String" />
</Fields>
</ext:ArrayReader>
</Reader>
<Listeners>
<Load Handler="if(this.initialized || !this.withPredefined){#{cbCombo3}.setValue(#{cbCombo3}.store.getAt(0).get('Combo3Id'));#{StoreCombo4}.reload();};this.initialized = true; " />
</Listeners>
</ext:Store>
<ext:Store ID="StoreCombo4" runat="server" AutoLoad="false" OnRefreshData="LoadCombo4s">
<Reader>
<ext:ArrayReader ReaderID="Combo3Id">
<Fields>
<ext:RecordField Name="Combo4Id" Type="String" />
<ext:RecordField Name="Combo4Name" Type="String" />
</Fields>
</ext:ArrayReader>
</Reader>
<Listeners>
<Load Handler="#{cbCombo4}.setValue(#{cbCombo4}.store.getAt(0).get('Combo4Id'));" />
</Listeners>
</ext:Store>
<ext:ComboBox ID="cbCombo1" runat="server" Width="200" FireSelectonload="true" StoreID="StoreCombo1"
TypeAhead="true" Mode="Local" ForceSelection="true" TriggerAction="All" DisplayField="Combo1Name"
ValueField="Combo1Id" EmptyText="No items">
<Listeners>
<Select Handler="#{StoreCombo2}.reload();" />
</Listeners>
</ext:ComboBox>
<ext:ComboBox ID="cbCombo2" runat="server" Width="200" StoreID="StoreCombo2" TypeAhead="true"
Mode="Local" ForceSelection="true" TriggerAction="All" DisplayField="Combo2Name" FireSelectonload="true"
ValueField="Combo2Id" EmptyText="No items">
<Listeners>
<Select Handler="#{StoreCombo3}.reload();" />
</Listeners>
</ext:ComboBox>
<ext:ComboBox ID="cbCombo3" runat="server" Width="200" StoreID="StoreCombo3" TypeAhead="true"
Mode="Local" ForceSelection="true" TriggerAction="All" DisplayField="Combo3Name" FireSelectonload="true"
ValueField="Combo3Id" EmptyText="No items">
<Listeners>
<Select Handler="#{StoreCombo4}.reload();" />
</Listeners>
</ext:ComboBox>
<ext:ComboBox ID="cbCombo4" runat="server" Width="200" StoreID="StoreCombo4" TypeAhead="true"
Mode="Local" ForceSelection="true" TriggerAction="All" DisplayField="Combo4Name"
ValueField="Combo4Id" EmptyText="No items">
</ext:ComboBox>
<ext:Button runat="server" ID="btnButton" Text="Set value">
<Listeners><Click Handler="Coolite.AjaxMethods.SelectValue();" /></Listeners>
</ext:Button>
</form>
</body>
</html>