0

あるExt.formPanelテキストフィールドからコードの別の部分に文字列を渡すことについて1つの質問があります。formPanelに2つの「テキストフィールド」があり、コードにある「url」の一部としてそこに入力する単語が必要です。おそらくあなたは尋ねるかもしれません、なぜこの男はそれを望んでいますか?これは、私が使用している「url」に、postgisdbテーブルにGeoJSONとして保存されている機能を生成するPHPスクリプトがあるためです。

このコード:

[CODE]
// define the data source
   var protocol = new OpenLayers.Protocol.HTTP({
   url: "http://localhost/postgis_geojson.php?geotable=boreholes_point_wgs84&geomfield=geom&parameters=" + "column" + ilike '%"string"%',
   format: new OpenLayers.Format.GeoJSON({
        ignoreExtraDims: true,
        'internalProjection': new OpenLayers.Projection("EPSG:900913"),
        'externalProjection': new OpenLayers.Projection("EPSG:4326")
    })
});

formPanel = new GeoExt.form.FormPanel({
    title: "Place Name Search",
    height: 150,
    region: "north",
    protocol: protocol,
    items: [{
        xtype: "textfield",
        id: "column",
        emptyText: "Choose table column",
        fieldLabel: "Choose table column",
        width: 200,
        allowBlank: false
    }, {
        xtype: "textfield",
        id: "string",
        emptyText: "Search inside table",
        fieldLabel: "Enter a word to search",
        width: 200,
        allowBlank: false
    }],
    listeners: {
        actioncomplete: function(form, action) {
            features = action.response.features;
            store.loadData(features);
            vm=map.getLayersByName("Results");
            if(vm.length===0){
                vecLayer = new OpenLayers.Layer.Vector("Results");
                map.addLayer(vecLayer);
                store.bind(vecLayer);
                select.bind(vecLayer);
            }
        }
    },
 buttons: [{text: 'search',
        handler: function(){
            formPanel.search();
        }
    }],
    keys: [{ key: [Ext.EventObject.ENTER],
        handler: function() {
            formPanel.search();
        }
    }]
});
[/CODE]

これらは私がすでにテストしたケースです:

  1. url ::http://localhost/postgis_geojson.php?geotable=boreholes_point_wgs84&geomfield=geomこれにより、テーブル全体「boreholes_point_wgs84」がGeoJSONとして生成されます。
  2. url ::http://localhost/postgis_geojson.php?geotable=boreholes_point_wgs84&geomfield=geom&parameters=station ilike '%llena%'これにより、「ステーション」列に「llena」が含まれる機能が1つだけ生成されます。したがって、このようにして、検索フォームから機能を見つけることができます。

私が考えていたのは、「textfield」に入力したこれら2つの文字列を渡して、これら2つの単語をキャッチし、上記の2番目のケースを形成できるように「url」を変更できるかどうかです。私はこれで遊んでいました:

url:、http://localhost/postgis_geojson.php?geotable=boreholes_point_wgs84&geomfield=geom&parameters=" + "column" + ilike '%"string"%'したがって、各xtypeの下に指定した「id」を使用しますが、機能しません。

よろしくお願いします。

よろしくお願いします、

ゲリー

4

2 に答える 2

0

これに対する正しい方法は、単純なフォーム送信です。テキスト入力値は、フォームポストでサーバーに送信されます。サーバー側は送信された値を解析し、必要なことを実行する必要があります。これは、プレーンHTMLやサーバー側フレームワークの使用と何ら変わりはありません。

または、POSTの代わりにHTTP GETメソッドを使用してフォームを強制的に送信すると、入力値がURLの一部になります。ExtJSでは、「メソッド」構成を使用します。APIドキュメントを参照してください:http://docs.sencha.com/ext-js/4-1/#!/api/Ext.form.Basic-cfg-method

編集:フォームを実際に「送信」することにまったく関心がない場合は、次のようにフィールド値を取得できます:form.findField('myField')。value

于 2012-10-01T18:03:39.600 に答える
0

私はこの解決策がこの問題を解決する方法を理解するのに役立つと確信しています、私は自分自身を解決しました。

于 2013-02-14T16:37:47.263 に答える