DHTMLX 动态填充组合
DHTMLX Dynamically populate combo
我有一个有效的DHTMLX网格,其中包含许多包含组合框的列。在以前的组合框中进行选择后,其中一些组合框需要动态填充数据。
例如。
如果用户在"项目"组合框中选择了项目 1234,则"作业"组合框应仅显示属于项目 1234 的作业的结果。
我被告知使用以下函数和方法,但无法弄清楚如何正确应用它们。
主要应用Javascript代码:
JoineryItems = timesheetGrid.getColumnCombo(6);
timesheetGrid.attachEvent("onEditCell",function(stage,rId,cInd,nValue,oValue){
if(cInd == 4 && stage == 2) {
JoineryItems.clearAll();
JoineryItems.load("data/combo/JoineryItems.php?Project="+nValue);
}
else {}
});
在服务器端组合连接器中使用以下 PHP 代码
$Project = $_GET[Project];
include_once '../../includes/db_connect.php';
include_once '../../includes/functions.php';
require_once("../../codebase/connector/combo_connector.php");
$data = new ComboConnector($res, "MySQL");
$data->render_sql("SELECT jmpJobID as value, jmpJobID as label from Inf_Jobs where jmpClosed = 0 AND jmpProjectID = $Project",
"jmpJobID",
"jmpJobID(value),jmpJobID(label)"
);
?>
目前我无法使以下内容正常运行:
JoineryItems.clearAll(); - 即使在代码运行 JoineryItems 组合框仍然包含值之后,此代码似乎根本没有执行任何操作。
JoineryItems.load(...); - 使用浏览器检查器,我可以看到结果以XML格式通过,但值不正确,而不是值和标签相同,标签正确通过,值作为奇数串通过,我无法确定它们来自哪里。
每当 onEditCell 事件附加到网格时,我的单元格值在页面刷新之前不会更新。 例如,如果用户将工作日期从 3 月 2 日更改为 3 月 3 日,则单元格将显示 3 月 2 日,直到页面刷新,此时它将显示 3 月 3 日,如果在页面刷新之前进行了多项更改,而不仅仅是进行最后更改。
你的 JavaScript 代码看起来不错,但缺少一个条件:
timesheetGrid.attachEvent("onEditCell",function(stage,rId,cInd,nValue,oValue){
if(cInd == INDEX_OF_PROJECT_COLUMN){
JoineryItems.clearAll();
JoineryItems.load("data/combo/JoineryItems.php?Project="+nValue);
}
});
附加的 if 条件将阻止在编辑除项目列以外的任何其他单元格时清除作业组合。INDEX_OF_PROJECT_COLUMN将是具有项目组合的列的索引值。此外,我还删除了额外的js变量ProjectID,因为在代码中,没有必要创建它,但这取决于您。我也不知道 PHP,但只要返回的数据是组合支持的数据,那么它就可以正常工作。您可以查看此链接以了解支持的数据类型。希望这有帮助。
这是通过以下方法完成的:
使用任何可用方法将列定义为组合。
获取组合列
MyCombo = MyGrid.getColumnCombo(ColumnIndex);
加载自定义
timesheetGrid.attachEvent("onCellChanged",function(rId,cInd,nValue){
if (cInd == 0 ) {
MyCombo.clearAll();
MyCombo.load("data/combo/MyCombo.php?CustomGetVariable="+nValue);
}
然后在 php 中使用自定义变量作为 select 语句的一部分,它将值集作为组合框选项返回
如果你想加载适合项目的作业,你应该使用如下
timesheetGrid.attachEvent("onEditCell",function(stage,rId,cInd,nValue,oValue){
if(cInd == 4 && stage == 2)
{
var combo2 =timesheetGrid.cells(rId,5).getCellCombo();
JoineryItems.clearAll();
JoineryItems.load("data/combo/JoineryItems.php?Project="+nValue);
}
});
- 以编程方式填充组合框道场 (1.8) 的最佳方法是什么?
- 类型错误:url未定义extjs 4正在填充组合框
- Jqgrid动态组合框填充不起作用
- 组合2个数组,如果它们不重复,则用0填充
- ZK:如何使用JavaScript在客户端填充ZK组合框
- KnockoutJS-根据第一个组合框中选择的值填充第二个组合框
- 如何从选定的组合框中填充文本框
- 当表单控件选项具有多个参数时,如何在组合框中填充所选项目
- 使用用户输入填充组合框
- jQuery 运行函数组合框填充多个组合框
- DHTMLX 动态填充组合
- 在 AngularJS 中填充组合框
- 用 JSON 填充 ExtJS 组合框
- 如何根据 html 页面中组合框中的值填充文本框的值
- Jquery组合框填充文本框
- 如何组合来自三个不同字段的值,并仅在所有三个字段都填充值时才将其设置为隐藏字段
- JavaScript 用 ajax 填充组合框,但在 C# 中,所选值为 null
- 使用组合框填充另一个组合框,以便用户可以运行查询
- 如何从多维数组填充列表框(组合框)
- 根据组合框中的选定值自动填充表单,使用 Jquery 和 Ajax