extjs4:从PHP+MySql将模型数据填充到组合框中

extjs 4 : filling model data into combobox from PHP + MySql

本文关键字:填充 组合 数据 模型 PHP+MySql extjs4      更新时间:2023-09-26
Ext.define('User', {
     extend: 'Ext.data.Model',
     fields: [
         {name: 'DeviceID', type: 'string'},
         {name: 'VehicleNo',  type: 'string'}
     ]
 });
    var store1 = new Ext.data.JsonStore({
    // store configs
    model: 'User',
    storeId: 'myStore',
    proxy: {
        type: 'ajax',
        url: 'combobox.php',
        id:'1', //show only the group ID is 1,this id are flexible,not necessary is 1
        fields: ['DeviceID','VehicleNo']
    } 
});

这是工具栏上的代码

xtype: 'combobox',
labelWidth: 50,
labelAlign: 'right',
fieldLabel: 'Vehicle',
name: 'state1',
width :180,
store: store1,
valueField: 'DeviceID',
displayField: 'VehicleNo',
typeAhead: true,
queryMode: 'local',
emptyText: 'Select a Vehicle...'

combobox.php

<?php
mysql_connect("localhost", "root", "") or die("Could not connect");
mysql_select_db("db_gps") or die("Could not select database");
$parent_id = $_GET['id'];
$query = "SELECT DeviceID as id, VehicleNo as text FROM Tbl_device WHERE GroupID='".$parent_id."' ORDER BY text ASC";
$rs = mysql_query($query);
$arr = array();
while($obj = mysql_fetch_object($rs)) {
 $arr[] = $obj;
}
echo json_encode($arr);
?>

Mysql数据库

delimiter $$
    CREATE TABLE `tbl_device` (
      `MainID` int(11) NOT NULL AUTO_INCREMENT,
      `DeviceID` varchar(11) NOT NULL,
      `VehicleNo` varchar(45) NOT NULL,
      `GroupID` varchar(45) NOT NULL,
      `AutoPic` bit(1) NOT NULL DEFAULT b'0',
      PRIMARY KEY (`MainID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1$$

问题

1( 我不能显示组合框数据?我的代码有问题吗?请帮忙,谢谢。在我的代码上,我正在尝试传递id的参数,你可以从我的代码中看到,我正在将id:1传递给combobox.php,这个传递值是灵活的,不是必须的,只有12( 这个代码数据模型是正确的吗?带有DeviceID和VehicleNo字段

我认为您只需要显式调用Store的加载函数,就可以通过配置的代理将数据加载到Store中:

store1.load();

除此之外,您可能需要检查查询返回到php块的数据。还要使用firebug或类似的东西检查返回给客户端的json

希望这能有所帮助。

编辑

或者,正如bmoeskau所说,在商店配置中包含autoLoad: true