extjs-使用来自数据库(sql)的另一个组合框的值填充组合框

57hvy0tb  于 2021-07-24  发布在  Java
关注(0)|答案(1)|浏览(376)

我有两个组合框,值来自我使用json填充的数据库。第二个组合在第一个组合更改时填充。当我们第一次设置第一个组合的值时,它就像魔法一样工作。但第二次,它没有得到绑定。并抛出一个错误这是我的运行代码:

  1. <script type="text/javascript">
  2. Ext.onReady(function() {
  3. var serverStore = Ext.create('Ext.data.Store', {
  4. storeId: 'serverStore',
  5. fields: [
  6. {
  7. name: 'u_hostname',
  8. mapping: 'u_hostname',
  9. type: 'string'
  10. }
  11. ],
  12. proxy: {
  13. type: 'ajax',
  14. url: '/list/data/dbapi/getRecordData',
  15. extraParams: {
  16. type: 'table',
  17. useSql: true,
  18. sqlQuery: 'select distinct(u_hostname) from SCRIPT_SCHEDULE'
  19. },
  20. reader: {
  21. type: 'json',
  22. root: 'records'
  23. }
  24. },
  25. autoLoad: true
  26. });
  27. var dpsStore = Ext.create('Ext.data.Store', {
  28. storeId: 'dpsStore',
  29. fields: [
  30. {
  31. name: 'u_username',
  32. mapping: 'u_username',
  33. type: 'string'
  34. },
  35. {
  36. name: 'u_hostname',
  37. mapping: 'u_hostname',
  38. type: 'string'
  39. }
  40. ],
  41. proxy: {
  42. type: 'ajax',
  43. url: '/list/data/dbapi/getRecordData',
  44. extraParams: {
  45. type: 'table',
  46. useSql: true,
  47. },
  48. reader: {
  49. type: 'json',
  50. root: 'records'
  51. }
  52. },
  53. autoLoad: true
  54. });
  55. var dpsCombo = Ext.create('Ext.form.ComboBox',{
  56. id: 'dpsCombo',
  57. fieldLabel: 'Username',
  58. hidden: false,
  59. margin: '5 0 0 25',
  60. queryMode: 'local',
  61. valueField: 'u_username',
  62. displayField: 'u_username'
  63. });
  64. var serverCombo = Ext.create('Ext.form.ComboBox',{
  65. id: 'serverCombo',
  66. fieldLabel: 'Server Name',
  67. hidden: false,
  68. margin: '5 0 0 25',
  69. store: serverStore,
  70. queryMode: 'local',
  71. valueField: 'u_hostname',
  72. displayField: 'u_hostname',
  73. listeners: {
  74. change: changeStore
  75. }
  76. });
  77. function changeStore(combo, value){
  78. var store;
  79. store = dpsStore;
  80. var combobox = Ext.getCmp('dpsCombo');
  81. combobox.clearValue();
  82. console.log(value);
  83. store.getProxy().setExtraParam("sqlQuery", `select distinct(u_username) from SCRIPT_SCHEDULE where u_hostname ='${value}'`);
  84. console.log(value);
  85. combobox.bindStore(store);
  86. store.load();
  87. }
  88. Ext.create('Ext.container.Viewport', {
  89. id: 'processviewport',
  90. layout: 'border',
  91. items: [{
  92. xtype: 'panel',
  93. id: 'filterPanel',
  94. layout: 'hbox',
  95. title: 'Data filter',
  96. region: 'north',
  97. collapsible: true,
  98. items: [{
  99. xtype: 'panel',
  100. layout: 'hbox',
  101. flex: 2,
  102. items:[
  103. {
  104. xtype: 'panel',
  105. layout: 'vbox',
  106. items: [
  107. serverCombo,
  108. dpsCombo
  109. ]
  110. }]
  111. }]
  112. }]
  113. });
  114. });
  115. </script>

错误:
未捕获的typeerror:无法读取未定义的属性“call”

sauutmhj

sauutmhj1#

通过在第二个组合框中添加lastquery:字段,解决了组合框未呈现第二个更改的数据的问题。

相关问题