movie_genres というテーブルがあります。
| | ジャンル_id | ジャンル名 |
データベースからこれらのジャンルを入力するコンボボックス (Ext js)
...
/* Remote data store */
var movie_genres = new Ext.data.Store({
reader: new Ext.data.JsonReader({
fields: ['genre_id', 'genre_name'],
root: 'rows'
}),
proxy: new Ext.data.HttpProxy({
url: '../GenresWebService.asmx/GetGenres'
})
});
var movie_form = new Ext.FormPanel({
url: 'movie-form-submit.aspx',
renderTo: 'myform',
frame: true,
title: 'Movie Information Form',
width: 400,
defaults: {
anchor: '100%'
},
items: [{
xtype: 'combo',
hiddenName: 'genre',
fieldLabel: 'Genre',
mode: 'remote',
store: movie_genres,
displayField: 'genre_name',
valueField: 'genre_id'
},
...
ASP.NET で WebService を使用して、json 形式の文字列でデータベースからジャンルを取得しています。
public class GenresWebService : System.Web.Services.WebService
{
[WebMethod]
public string GetGenres()
{
SqlConnection con = new SqlConnection(connectionString);
con.Open();
String sql = "SELECT genre_id, genre_name FROM movie_genres";
SqlDataAdapter da = new SqlDataAdapter(sql, con);
DataSet genres = new DataSet();
da.Fill(genres, "movie_genres");
JavaScriptSerializer jss = new JavaScriptSerializer();
string json = jss.Serialize(genres);
con.Close();
return "{rows:" + json + "}";
}
}
何も起こりません。私のコンボボックスは空です。ジャンルもエラーも応答も何もありません。
ありがとうございました
EDIT @allieが言及したようにストア定義
に追加autoLoad: true
しましたが、firebugでエラーが発生しました:
Get http://localhost:12345/GenresWebService.asmx/GetGenres?_dc=1344964138589 500 Internal Server Error 17 ms.
firebug の応答では、エラーについて次のように説明されています。
System.InvalidOperationException: 'System.Globalization.CultureInfo' 型のオブジェクトのシリアル化中に循環参照が検出されました。System.Web.Script.Serialization.JavaScriptSerializer.SerializeValueInternal (オブジェクト o、StringBuilder sb、Int32 深度、Hashtable objectsInUse、SerializationFormat serializationFormat) で...
GenresWebService をデバッグしようとしましたが、次の行で上記のエラーが発生しました。
string json = jss.Serialize(genres);
私はそれが実際に何を意味するのか分かりません:(