rowclick 事件以修改 dojo 网格中的下拉值
rowclick event to modify dropdown value in dojo grid
我的要求是当我点击增强网格中的任何一行时,下拉菜单中的值应该改变,就像当我点击第 1 行时,
下拉列表中的第一个选项应该显示,当我点击 row2 时,第二个选项应该在用户点击 row2 时立即显示在下拉列表中,对于其他行也是如此......请找到 fiddle http://jsfiddle.net/x9kLbqz5/4/.
每当用户单击任何 row.Below 代码时,我都可以获取行信息:
dojo.connect(grid, "onRowClick", function(evt){
var idx = evt.rowIndex,
item = this.getItem(idx);
dojo.byId("results").innerHTML = "You have clicked on "
+ this.store.getValue(item, "id");
});
但问题是我无法继续编写 javascript 以根据用户单击的行更改下拉菜单值。
另一个要求是行应该是可编辑的,这是在定义列时使用 editable:'true' 实现的。
请建议我如何显示根据 user.Thanks.
单击的行更改的下拉菜单列表值
--编辑--
我的实际要求是当我单击网格中的任何行时,获取第 1 列值并点击 spring 控制器,以便基于该值 spring 控制器 returns 下拉菜单我需要在下拉菜单中显示的值。请参阅 fiddle : http://jsfiddle.net/x9kLbqz5/7/
但问题是当我调用 javascript 函数 getDropDownValue(id);在 dojo.connect(grid, "onRowClick", function(evt) 中,行不再可编辑,我希望该行也被编辑并调用javascript 函数,以便我可以 ajax 调用 spring 控制器以获取动态下拉值并显示在下拉列表中。
dojo.connect(grid, "onRowClick", function(evt){
var idx = evt.rowIndex,
item = this.getItem(idx);
dojo.byId("results").innerHTML = "You have clicked on "
+ this.store.getValue(item, "id");
var id = this.store.getValue(item, "id");
alert("item:" + id);
getDropDownValue(id);
});
function getDropDownValue(ColumnValue){
alert("getDropDownValue");
//ajax call to hit spring controller and get the dropdown value
var column1 = columnValue;
var xmlHttp;
if (window.XMLHttpRequest)
{
xmlHttp= new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
}
var url = <%=request.getContextPath%>+"/getDropDownValue.htm?id="+column1;
xmlHttp.onreadystatechange = function() {
handleServerResponse(xmlHttp);
};
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
function handleServerResponse(xmlHttp)
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
if (xmlHttp.responseText != "null")
{
//handle response
}
}
}
}
我更新了 JsFiddle (http://jsfiddle.net/x9kLbqz5/5/)。
1) SelectedIndex 将设置下拉列表中的值
2) editable : true 是布尔值而不是字符串。
谢谢
斯里坎特
//Set the value in the dropdown
dojo.byId('a').selectedIndex = this.store.getValue(item, "id");
//Editable columns (double click or click +Enter)
var layout = [[
{'name': 'Column 1', 'field': 'id', 'width': '100px'},
{'name': 'Column 2', 'field': 'col2', 'width': '100px',editable:true},
{'name': 'Column 3', 'field': 'col3', 'width': '200px',editable:true},
{'name': 'Column 4', 'field': 'col4', 'width': '150px',editable:true},
{'name': 'Last', 'field': 'last', 'width': '150px',editable:true}
]];
谢谢
斯里坎特
我的要求是当我点击增强网格中的任何一行时,下拉菜单中的值应该改变,就像当我点击第 1 行时, 下拉列表中的第一个选项应该显示,当我点击 row2 时,第二个选项应该在用户点击 row2 时立即显示在下拉列表中,对于其他行也是如此......请找到 fiddle http://jsfiddle.net/x9kLbqz5/4/.
每当用户单击任何 row.Below 代码时,我都可以获取行信息:
dojo.connect(grid, "onRowClick", function(evt){
var idx = evt.rowIndex,
item = this.getItem(idx);
dojo.byId("results").innerHTML = "You have clicked on "
+ this.store.getValue(item, "id");
});
但问题是我无法继续编写 javascript 以根据用户单击的行更改下拉菜单值。 另一个要求是行应该是可编辑的,这是在定义列时使用 editable:'true' 实现的。 请建议我如何显示根据 user.Thanks.
单击的行更改的下拉菜单列表值--编辑--
我的实际要求是当我单击网格中的任何行时,获取第 1 列值并点击 spring 控制器,以便基于该值 spring 控制器 returns 下拉菜单我需要在下拉菜单中显示的值。请参阅 fiddle : http://jsfiddle.net/x9kLbqz5/7/ 但问题是当我调用 javascript 函数 getDropDownValue(id);在 dojo.connect(grid, "onRowClick", function(evt) 中,行不再可编辑,我希望该行也被编辑并调用javascript 函数,以便我可以 ajax 调用 spring 控制器以获取动态下拉值并显示在下拉列表中。
dojo.connect(grid, "onRowClick", function(evt){
var idx = evt.rowIndex,
item = this.getItem(idx);
dojo.byId("results").innerHTML = "You have clicked on "
+ this.store.getValue(item, "id");
var id = this.store.getValue(item, "id");
alert("item:" + id);
getDropDownValue(id);
});
function getDropDownValue(ColumnValue){
alert("getDropDownValue");
//ajax call to hit spring controller and get the dropdown value
var column1 = columnValue;
var xmlHttp;
if (window.XMLHttpRequest)
{
xmlHttp= new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
}
var url = <%=request.getContextPath%>+"/getDropDownValue.htm?id="+column1;
xmlHttp.onreadystatechange = function() {
handleServerResponse(xmlHttp);
};
xmlHttp.open("GET", url, true);
xmlHttp.send(null);
function handleServerResponse(xmlHttp)
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
if (xmlHttp.responseText != "null")
{
//handle response
}
}
}
}
我更新了 JsFiddle (http://jsfiddle.net/x9kLbqz5/5/)。 1) SelectedIndex 将设置下拉列表中的值 2) editable : true 是布尔值而不是字符串。
谢谢 斯里坎特
//Set the value in the dropdown
dojo.byId('a').selectedIndex = this.store.getValue(item, "id");
//Editable columns (double click or click +Enter)
var layout = [[
{'name': 'Column 1', 'field': 'id', 'width': '100px'},
{'name': 'Column 2', 'field': 'col2', 'width': '100px',editable:true},
{'name': 'Column 3', 'field': 'col3', 'width': '200px',editable:true},
{'name': 'Column 4', 'field': 'col4', 'width': '150px',editable:true},
{'name': 'Last', 'field': 'last', 'width': '150px',editable:true}
]];
谢谢 斯里坎特