1

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);

私はそれが実際に何を意味するのか分かりません:(

4

1 に答える 1

0

返事が無ければ依頼も無いのでは?

ストア定義にautoLoad:trueを追加すると役に立ちますか?

于 2012-08-14T15:59:06.830 に答える