Apr 11, 2012, 2:17 AM
What Kind of Datasource does Ext.Store accept ??
I would like use combox for drop-down list.
ASPX Code
ASPX Code
<ext:Store ID="StockRoomListStore" runat="server">
<Reader>
<ext:JsonReader>
<Fields>
<ext:RecordField Name="StockroomID" Type="String">
</ext:RecordField>
<ext:RecordField Name="StockChinName" Type="String">
</ext:RecordField>
</Fields>
</ext:JsonReader>
</Reader>
</ext:Store>
<ext:ComboBox ID="cmbStockRoomOut" runat="server" StoreID="StockRoomListStore" DataIndex="StockRoomID_Out"
Note="StockRoomOut" Mode="Local" ListWidth="160px" DisplayField="StockChinName"
ValueField="StockroomID" ItemSelector="tr.Stockroomlist-item">
<Template ID="Template5" runat="server">
<Html>
<tpl for=".">
<tpl if="[xindex] == 1">
<table class="StockRoomlist">
</tpl>
<tr class="Stockroomlist-item">
<td style="padding:6px 0px;">{StockChinName}</td>
</tr>
<tpl if="[xcount-xindex]==0">
</table>
</tpl>
</tpl>
</Html>
</Template>
<Triggers>
<ext:FieldTrigger Icon="Clear" HideTrigger="true" />
</Triggers>
<Listeners>
<BeforeQuery Handler="this.triggers[0][ this.getRawValue().toString().length == 0 ? 'hide' : 'show']();" />
<TriggerClick Handler="if (index == 0) { this.focus().clearValue(); trigger.hide();}" />
<Select Handler="{this.triggers[0].show();}" />
</Listeners>
</ext:ComboBox>
Code Behind:protected void Page_Load(object sender, EventArgs e)
{
if (!X.IsAjaxRequest)
{
StockRoomListStore.DataSource = GetStockroomList();
StockRoomListStore.DataBind();
}
}
private List<JsonObject> GetStockroomList()
{
DbCommand sql = _manageLogic.StockRoomList();///Get StockRoomList from SQL
DataTable sourcetbl = sql.FillTable();
if (sourcetbl == null || sourcetbl.Rows.Count == 0)
return null;
string json = _manageLogic.GetJSON(sourcetbl); ///Transfer DataTable Structure into JSON
List<JsonObject> list = JSON.Deserialize<List<JsonObject>>(json);
return list;
}
public string GetJSON(DataTable dt)
{
StringBuilder sb = new StringBuilder();
///sb.Append("{\"totalCount\":" + dt.Rows.Count + ",\"data\":");
sb.Append("[");
try
{
if (dt.Rows.Count > 0)
{
Hashtable ht = new Hashtable();
for (int i = 0; i < dt.Columns.Count; i++)
{
ht.Add(i, dt.Columns[i].ColumnName);
}
for (int i = 0; i < dt.Rows.Count; i++)
{
sb.Append("{");
for (int j = 0; j < dt.Columns.Count; j++)
{
sb.Append(string.Format("\"{0}\":\"{1}\",",
ht[j], dt.Rows[i][j].ToString()));
}
sb.Remove(sb.ToString().LastIndexOf(","), 1);
sb.Append("},");
}
sb.Remove(sb.ToString().LastIndexOf(","), 1);
ht.Clear();
ht = null;
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
///sb.Append("]}");
sb.Append("]");
}
return sb.ToString();
}
But my combobox shosw nothing. I wonder if my datasource type was wrong or other reason ????