初対面Ext.NET

6673 ワード

ExtJSを使うとは思わなかったが、スクリプトリソースが大きい、実行スクリプトが多い、性能が悪いなど、いつも反感を持っている.最近一つのアイテムが使われていたので使ってみました.JQueryに対して、ExtJSはそんなに便利で柔軟ではありませんが、そのインタフェースは美しく、機能は実用的で、多くの開発時間を節約することができます.ExtJSをプレイすると、コンフィギュレーションをプレイしているような気がしますが、Javaプログラマーは慣れているかもしれません.それらの配置を熟知するのも間違いなく面倒で厄介なことで、少し注意しないと、自分のミスのために注文を埋めなければなりません.ネット上にはデザイナがありますが、ほとんど需要を満たすことができません.その後、ネット上でいいフレームワークを見つけました.Ext.NETです.これは.NET開発者にとって、多くの時間を節約できます.少なくともスマートヒント付きxml構成は、jsを書くよりも簡単です.しかも無料でオープンソースです.しかし、使用中も、それほどスムーズではありません.
1)TextFieldのLabelStyle属性が無効です.これは外国人によると、ExtJSのBugのようです.Ext.NETはあなたの設定に基づいて標準的なExtJS構成を生成しますから.しかし、人はいつも1本の木の上で首を吊って死ぬことができないでしょう.私の解決策は次のとおりです.
   function setLabelClass() {

        $(".x-form-item-label").addClass("labelStyle");

    }

ExtJSで生成されたhtmlをモニタすると、フォームフィールドにこのスタイルが使用されます.だから私はこのスタイルに基づいて自分のスタイルを追加しました.しかし、この関数はExt.onReadyに入れて実行します.
2)FieldSetなどのコンテナコントロールは検証をトリガーしない(FormPanelを除く).この外国人は低バージョンのExtJSの問題だと言って、Ext.NETのソースコード全体をダウンロードして、jsを見て、現在パッケージされているリソースが3.3.0バージョンであることを発見しました.後ろに1が少なくなったのかもしれません.ソースコードを変更する気がなくて、手を変えて、すべてFormPanelのレイアウトを使って、半日やって、やっとレイアウトが満足しました.FormPanelにFormPanelをネストし、子FormPanelのLayoutをColumnに設定すればレイアウトがよくなります.あるいはTableLayoutを使うことも考えられ、レイアウトも便利です.
3)CheckboxGroupとRadioGroupに子を動的に追加した場合,値を取得できないという問題がある.これはやはりExtJSのBugです.SetValues形式での追加のみをサポートしているのかもしれません.私はExt.NETにCheckBox(Page_Loadイベントに追加)を動的に追加し、ソースコードを表示し、生成されたjs構成に基づいてcheckboxGroupのitems属性に「new Ext.form.Checkbox」を表示します.コードをExt.NETフォーラムに送ると、外国人たちも仕方がないことに気づいた.そこで自分でテストしてみると、JSで『FormPanel1.ClientID %> .getForm().getValues(true)』を ってもCheckboxGroupとRadioGroupで した が れないことに づき、ExtJSの であるべきだと えたのでPage_Loadイベントでは、SetValueを び して を にバインドする があるかもしれません.しかし、SetValueには3つのパラメータ(テキスト、 、 するかどうか)のリロードがなく、 の に しません.そこで の を いついた.
    Ext.onReady(function () {

        setGroupValues(,);

        setGroupValues(,);

        setGroupValues(,);

        setGroupValues(,);

    });

    function setGroupValues(cblID,cblHidden) {

         var cbos = $('#'+cblID.id+' input[type=checkbox],input[type=radio]');

         cbos.change(function () {

            var items=cblID.getValue();

            if (items!=null && items.length==undefined) {

                cblHidden.setValue(items.tag);

                return;

            }

            var strValue='';

            if (items!=null) {

                for (var i = 0; i < items.length; i++) {

                      strValue+=items[i].tag+";";

                }

            }

            cblHidden.setValue(strValue);

        });

    }  

これにより、チェックボックスグループとラジオボックスグループの イベントで、 した を ドメインに し、バックグラウンドで を できます.ただし、ExtJSフォームコントロールに を り てる は、 (text、value)を して を り てるのではなく、htmlコントロールに を き むだけで、ExtJSがデータをコミットするときはコミットされず、setValueメソッドを する があります.この はもちろん を することができますが、 の の ではいつも があると っていますが、 がかかりません. いテストに って、やっと を つけた.すなわち、FormPanelコントロールではContent レイアウトは されず、Itemsレイアウトを すると はありません. のようにテストします.






    

        

            

                

                    

                        

                        

                    

                

            

        

        

            

                

                    

                        

                        

                    

                

            

        

    

    

        

        

    

protected void Page_Load(object sender, EventArgs e)
{
    cblBusinessDistrict.ColumnsNumber = cboTest2.ColumnsNumber = 5;
    for (int i = 0; i < 10; i++)
    {
        Ext.Net.Checkbox cbo = new Ext.Net.Checkbox();
        cbo.BoxLabel = i + "Text";
        cbo.Tag = i.ToString();
        cbo.InputValue = i + "Value";
        cblBusinessDistrict.Items.Add(cbo);
        Ext.Net.Checkbox cbo1 = new Ext.Net.Checkbox();
        cbo1.BoxLabel = i + "Text";
        cbo1.Tag = i.ToString();
        cbo1.InputValue = i + "Value";
        cboTest2.Items.Add(cbo1);
    }
}
 
protected void Save_Click(object sender, DirectEventArgs e)
{
    string _str = string.Empty;
    foreach (var item in cblBusinessDistrict.Items)
    {
        _str += item.BoxLabel + ":" + item.InputValue + ":" + item.Checked + "\
"; } ResourceManager1.AddScript("alert('" + _str + "');"); } protected void Test2_Click(object sender, DirectEventArgs e) { string _str = string.Empty; foreach (var item in cboTest2.Items) { _str += item.BoxLabel + ":" + item.InputValue + ":" + item.Checked + "\
"; } ResourceManager1.AddScript("alert('" + _str + "');"); }

にExtJSは くないと いますが、 にExt.NETもかなり くなく、オープンソースです. は がExtJSを したとき、 に つと じたサイトです.http://dev.sencha.com/deploy/dev/examples/(ExtJS )
http://dev.sencha.com/deploy/dev/docs/(ExtJS API)
http://www.ext.net(Ext.NET)
http://examples.ext.net/(Ext.NET )
http://james.newtonking.com/projects/json-net.aspx(JSON.NET)
http://www.jsonlint.com/(JSONフォーマットを し、JSONをフォーマットしやすいと じます.これはJSONデータ、ExtJS の やチェックに です.)