0

jTable (www.jTable.org) を使用して、ASP.NET で単純なグリッドに取り組んでいます。これは「居住者」のリストを含むページで、データベースの FACILITY テーブルから入力された「FacilityFrom」というフィールドがあります。「居住者」jTableには、「オプション」属性を使用し、「施設」SQLテーブルからプルするフィールドがあります。新しいレコードを追加するときに、最初のデフォルト値が「(NONE)」であるドロップダウンリストが必要です。

私はいくつかのMSSQLマジックを行い、デフォルト値を表すレコードを作成しました(データベース内のそのフィールドは文字通り「(NONE)」です。次に、ドロップダウンにデータを入力するときに行います

select FacilityID,Name from FACILITY where Name = '(NONE)'
UNION
select FacilityID,Name from FACILITY where Name <> '(NONE)'

私はそれが醜いことを認識しています (気密にするために必要な一意の制約を設定しました) が、クエリは期待どおりに機能し、「(NONE)」オプションを一番上に置きます。しかし、何らかの理由で、jTable は独自に並べ替えの魔法を実行し、それを一番下に配置しています! 上記のselectステートメントを逆にしても、それは一番下にありますか? GetFacilityOptions という名前の WebMethod にブレークポイントを設定しても、結果が希望どおりであることは明らかです (NONE) は常にリストのインデックス 0 にあります。jquery バインディングで何かが変更されているようです。

とにかく、jTable のドキュメントで defaultValue 属性を見つけて、それで問題が解決すると思ったのですが、それでも効果はありませんか? HTML は以下のとおりです。

                             FacilityFromID: {
                             title: 'Facility',
                             options: '/Residents.aspx/GetFacilityOptions',
                             defaultValue: '(NONE)'
                         },

コード ビハインドは次のとおりです。

        [WebMethod(EnableSession = true)]
        public static object GetFacilityOptions()
        {
            try
            {
                var facilities = BusinessObjects.DataAcesss.GetAllFacilities().Select(c => new { DisplayText = c.Name, Value = c.FacilityID });
                //BREAKPOINT SAYS '(NONE)' IS AT INDEX 0 HERE!!
                return new { Result = "OK", Options = facilities };
            }
            catch (Exception ex)
            {
                return new { Result = "ERROR", Message = ex.Message };
            }
        }

アイデアや提案はありますか?本当にありがとう!

4

1 に答える 1