bug!DataGrid开启多选模式后,view页面只要存在iframe该控件的全选、反选失效了

DataGrid开启多选模式后(selectionMode),同一view页面中只要存在iframe该控件的全选、全部选、反选就不会出现了。正常情况是点击√会出现模态三个选项。
已邀请:

WilliamJiang

赞同来自:

测试未能重现,你是否可以提供可以重现的测试用例

zxw - 国服第二强民

赞同来自:

这个论坛的上传,不知道如何使用,没有选择上传文件的文本框。我只能给view页面代码了。见谅

这个环境是bdf2在线项目并带uflo的。
<?xml version="1.0" encoding="UTF-8"?>
<ViewConfig>
<Arguments/>
<Context/>
<Model>
<DataType name="dataTypeProcessAssigneeInfo">
<Property name="creationType">com.bstek.uflo.console.controller.AssigneeInfo</Property>
<PropertyDef name="name">
<Property name="dataType">String</Property>
</PropertyDef>
<PropertyDef name="count">
<Property name="dataType">int</Property>
</PropertyDef>
<PropertyDef name="tree">
<Property name="dataType">boolean</Property>
</PropertyDef>
<PropertyDef name="providerId">
<Property name="dataType">String</Property>
</PropertyDef>
</DataType>
<DataType name="dataTypeProcessAssignee">
<Property name="creationType">com.bstek.uflo.process.assign.Assignee</Property>
<PropertyDef name="id">
<Property name="dataType">String</Property>
</PropertyDef>
<PropertyDef name="name">
<Property name="dataType">String</Property>
</PropertyDef>
<PropertyDef name="providerId">
<Property name="dataType">String</Property>
</PropertyDef>
<PropertyDef name="chosen">
<Property name="dataType">boolean</Property>
</PropertyDef>
</DataType>
</Model>
<View id="fwlccl">
<Container layout="hbox pack:end">
<Container layout="hbox pack:end">
<Property name="height">40</Property>
<Button>
<ClientEvent name="onClick">dorado.MessageBox.alert(&quot;你点击了&quot;+self.get(&quot;caption&quot;));&#xD;
//选择下一环节处理人&#xD;
dialog = view.get(&quot;#dialogAssignee&quot;);&#xD;
&#xD;
//装载下一环节处理人&#xD;
var entityList = &quot;#&quot;;&#xD;
&#xD;
dialog.$show({&#xD;
callback: function(result){&#xD;
//遍历添加处理人&#xD;
result.each(function(data){&#xD;
//处理人字符串集以分号隔开&#xD;
entityList += &quot;;&quot; + data.toJSON().id;&#xD;
});&#xD;
dialog.hide();&#xD;
&#xD;
}});</ClientEvent>
<Property name="caption">请点击我</Property>
<Property name="hideMode">display</Property>
<Property name="className">d-custom-button-out</Property>
</Button>
</Container>
<Dialog id="dialogNode">
<ClientEvent name="onCreate">self.$show=function(config){&#xD;
if(!config.callback){&#xD;
dorado.MessageBox.alert(&quot;请先定义一个callback函数&quot;);&#xD;
return;&#xD;
}else{&#xD;
self.callback=config.callback;&#xD;
}&#xD;
if(config.caption){&#xD;
self.set(&quot;caption&quot;,config.caption);&#xD;
}&#xD;
if(config.width){&#xD;
self.set(&quot;width&quot;,config.width);&#xD;
}&#xD;
if(config.height){&#xD;
self.set(&quot;height&quot;,config.height);&#xD;
}&#xD;
self.show();&#xD;
}</ClientEvent>
<Property name="width">500</Property>
<Property name="height">450</Property>
<Property name="modal">true</Property>
<Property name="center">true</Property>
<Property name="caption">选择发起流程环节</Property>
<Buttons>
<Button id="buttonFinishNode">
<ClientEvent name="onClick">&#xD;
dialog=view.get(&quot;#dialogNode&quot;),&#xD;
data=[];&#xD;
&#xD;
//data=view.get(&quot;#listDropDown1&quot;).getSelectedValue();&#xD;
data=view.get(&quot;#textEditorNodeName&quot;).get(&quot;value&quot;);&#xD;
//dorado.MessageBox.alert(data);&#xD;
//console.log(data);&#xD;
if(data.length==0){&#xD;
dorado.MessageBox.alert(&quot;请选择发起流程环节!&quot;);&#xD;
}else{ &#xD;
dialog.callback(data);&#xD;
}&#xD;
</ClientEvent>
<Property name="caption">确认</Property>
<Property name="icon">url(>skin>common/icons.gif) -20px -0px</Property>
<Property name="hideMode">display</Property>
<Property name="visible">true</Property>
</Button>
</Buttons>
<Children>
<CardBook id="cardBookNode">
<Panel>
<Property name="caption">选择具体环节</Property>
<Buttons/>
<Children>
<TextEditor id="textEditorNodeName">
<Property name="trigger">autoMappingDropDown1</Property>
<Property name="property">name</Property>
<Property name="mapping">
<Property name="mapValues">${dorado.getDataProvider(&quot;utilMap#getFwhj&quot;).getResult()}</Property>
</Property>
</TextEditor>
</Children>
<Tools/>
</Panel>
</CardBook>
</Children>
<Tools/>
</Dialog>
<Dialog id="dialogAssignee">
<ClientEvent name="onShow">view.get(&quot;#dataSetProcessAssigneeInfo&quot;).flushAsync();&#xD;
view.get(&quot;#cardBookAssignee&quot;).set(&quot;currentIndex&quot;,0);&#xD;
view.get(&quot;#buttonNextAssignee&quot;).set(&quot;visible&quot;,true);&#xD;
view.get(&quot;#buttonPreviousAssignee&quot;).set(&quot;visible&quot;,false);&#xD;
view.get(&quot;#buttonFinishAssignee&quot;).set(&quot;visible&quot;,false);&#xD;
&#xD;
&#xD;
</ClientEvent>
<ClientEvent name="onCreate">self.$show=function(config){&#xD;
if(!config.callback){&#xD;
dorado.MessageBox.alert(&quot;请先定义一个callback函数&quot;);&#xD;
return;&#xD;
}else{&#xD;
self.callback=config.callback;&#xD;
}&#xD;
if(config.caption){&#xD;
self.set(&quot;caption&quot;,config.caption);&#xD;
}&#xD;
if(config.width){&#xD;
self.set(&quot;width&quot;,config.width);&#xD;
}&#xD;
if(config.height){&#xD;
self.set(&quot;height&quot;,config.height);&#xD;
}&#xD;
self.show();&#xD;
}</ClientEvent>
<Property name="width">500</Property>
<Property name="height">450</Property>
<Property name="modal">true</Property>
<Property name="center">true</Property>
<Property name="caption">选择指定参与者</Property>
<Buttons>
<Button id="buttonNextAssignee">
<ClientEvent name="onClick">&#xD;
var entity=view.get(&quot;#dataSetProcessAssigneeInfo&quot;).getData(&quot;#&quot;);&#xD;
if(!entity){&#xD;
dorado.MessageBox.alert(&quot;请选择分配类型信息!&quot;);&#xD;
}else{ &#xD;
if(entity.get(&quot;tree&quot;)==false){ &#xD;
var ds=view.get(&quot;#dataSetProcessGridAssignee&quot;);&#xD;
ds.set(&quot;parameter&quot;,{&#xD;
providerId:entity.get(&quot;providerId&quot;),&#xD;
parentId:null&#xD;
}).flushAsync();&#xD;
view.get(&quot;#buttonFinishAssignee&quot;).set(&quot;visible&quot;,true);&#xD;
view.get(&quot;#buttonNextAssignee&quot;).set(&quot;visible&quot;,false);&#xD;
view.get(&quot;#buttonPreviousAssignee&quot;).set(&quot;visible&quot;,true);&#xD;
view.get(&quot;#cardBookAssignee&quot;).set(&quot;currentIndex&quot;,1);&#xD;
}&#xD;
}&#xD;
&#xD;
</ClientEvent>
<Property name="caption">下一步</Property>
<Property name="icon">url(>skin>common/icons.gif) -140px -280px</Property>
</Button>
<Button id="buttonPreviousAssignee">
<ClientEvent name="onClick">view.get(&quot;#buttonNextAssignee&quot;).set(&quot;visible&quot;,true);&#xD;
view.get(&quot;#buttonFinishAssignee&quot;).set(&quot;visible&quot;,false);&#xD;
view.get(&quot;#buttonPreviousAssignee&quot;).set(&quot;visible&quot;,false);&#xD;
view.get(&quot;#cardBookAssignee&quot;).set(&quot;currentIndex&quot;,0);&#xD;
</ClientEvent>
<Property name="caption">上一步</Property>
<Property name="icon">url(>skin>common/icons.gif) -120px -280px</Property>
<Property name="hideMode">display</Property>
<Property name="visible">false</Property>
</Button>
<Button id="buttonFinishAssignee">
<ClientEvent name="onClick">var index=view.get(&quot;#cardBookAssignee&quot;).get(&quot;currentIndex&quot;),&#xD;
dialog=view.get(&quot;#dialogAssignee&quot;),&#xD;
data=[];&#xD;
if(index==1){&#xD;
data=view.get(&quot;#dataGridProcessAssignee&quot;).get(&quot;selection&quot;);&#xD;
}else if(index==2){&#xD;
//var nodes=view.get(&quot;#dataTreeProcessAssignee&quot;).getCheckedNodes(false);&#xD;
//if(nodes){&#xD;
// nodes.each(function(node){&#xD;
// data.push(node.get(&quot;data&quot;));&#xD;
// });&#xD;
//}&#xD;
}&#xD;
if(data.length==0){&#xD;
dorado.MessageBox.alert(&quot;请选择参与者!&quot;);&#xD;
}else{ &#xD;
dialog.callback(data);&#xD;
}&#xD;
</ClientEvent>
<Property name="caption">完成</Property>
<Property name="icon">url(>skin>common/icons.gif) -20px -0px</Property>
<Property name="hideMode">display</Property>
<Property name="visible">false</Property>
</Button>
</Buttons>
<Children>
<CardBook id="cardBookAssignee">
<Panel>
<Property name="caption">第一步,选择处理人类型</Property>
<Buttons/>
<Children>
<DataSet id="dataSetProcessAssigneeInfo">
<Property name="dataType">[dataTypeProcessAssigneeInfo]</Property>
<Property name="dataProvider">ufloDesignerMaintain#findAssigneeInfos</Property>
</DataSet>
<DataListBox>
<Property name="dataSet">dataSetProcessAssigneeInfo</Property>
<Property name="property">name</Property>
</DataListBox>
</Children>
<Tools/>
</Panel>
<Panel>
<Property name="caption">第二步,选择具体处理人</Property>
<Buttons/>
<Children>
<DataSet id="dataSetProcessGridAssignee">
<Property name="dataType">[dataTypeProcessAssignee]</Property>
<Property name="dataProvider">ufloDesignerMaintain#loadGridAssignees</Property>
<Property name="pageSize">15</Property>
<Property name="loadMode">manual</Property>
</DataSet>
<ToolBar>
<DataPilot>
<Property name="dataSet">dataSetProcessGridAssignee</Property>
</DataPilot>
</ToolBar>
<DataGrid id="dataGridProcessAssignee">
<Property name="dataSet">dataSetProcessGridAssignee</Property>
<Property name="selectionMode">multiRows</Property>
<Property name="readOnly">true</Property>
<RowSelectorColumn/>
<DataColumn>
<Property name="align">center</Property>
<Property name="property">id</Property>
<Property name="name">id</Property>
<Property name="caption">用户名</Property>
</DataColumn>
<DataColumn>
<Property name="name">name</Property>
<Property name="align">center</Property>
<Property name="property">name</Property>
<Property name="caption">登录名</Property>
</DataColumn>
</DataGrid>
</Children>
<Tools/>
</Panel>
</CardBook>
</Children>
<Tools/>
</Dialog>
<Dialog id="dialogFile">
<ClientEvent name="onCreate">self.$show=function(config){&#xD;
if(!config.callback){&#xD;
dorado.MessageBox.alert(&quot;请先定义一个callback函数&quot;);&#xD;
return;&#xD;
}else{&#xD;
self.callback=config.callback;&#xD;
}&#xD;
if(config.caption){&#xD;
self.set(&quot;caption&quot;,config.caption);&#xD;
}&#xD;
if(config.width){&#xD;
self.set(&quot;width&quot;,config.width);&#xD;
}&#xD;
if(config.height){&#xD;
self.set(&quot;height&quot;,config.height);&#xD;
}&#xD;
self.show();&#xD;
}</ClientEvent>
<Property name="width">400</Property>
<Property name="height">300</Property>
<Property name="modal">true</Property>
<Property name="center">true</Property>
<Property name="caption">选择归档类型</Property>
<Buttons>
<Button id="buttonFinishFile">
<ClientEvent name="onClick">&#xD;
dialog=view.get(&quot;#dialogFile&quot;),&#xD;
data=[];&#xD;
&#xD;
//data=view.get(&quot;#listDropDown1&quot;).getSelectedValue();&#xD;
data=view.get(&quot;#textEditorFile&quot;).get(&quot;value&quot;);&#xD;
//dorado.MessageBox.alert(data);&#xD;
//console.log(data);&#xD;
if(data.length==0){&#xD;
dorado.MessageBox.alert(&quot;请选择发起流程环节!&quot;);&#xD;
}else{ &#xD;
dialog.callback(data);&#xD;
}&#xD;
</ClientEvent>
<Property name="caption">确认</Property>
<Property name="icon">url(>skin>common/icons.gif) -20px -0px</Property>
<Property name="hideMode">display</Property>
<Property name="visible">true</Property>
</Button>
</Buttons>
<Children>
<CardBook id="cardBookFile">
<Panel>
<Property name="caption">选择具体环节</Property>
<Buttons/>
<Children>
<TextEditor id="textEditorFile">
<Property name="trigger">autoMappingDropDown1</Property>
<Property name="property">name</Property>
<Property name="mapping">
<Property name="mapValues">${dorado.getDataProvider(&quot;utilMap#getFwgdlx&quot;).getResult()}</Property>
</Property>
</TextEditor>
</Children>
<Tools/>
</Panel>
</CardBook>
</Children>
<Tools/>
</Dialog>
<TextEditor id="nodeNameText">
<Property name="property">nodeNameText</Property>
<Property name="visible">false</Property>
</TextEditor>
<Dialog id="dialogChangeTaskAssignee">
<ClientEvent name="onShow">view.get(&quot;#dataSetProcessAssigneeInfo&quot;).flushAsync();&#xD;
view.get(&quot;#cardBookAssignee2&quot;).set(&quot;currentIndex&quot;,0);&#xD;
view.get(&quot;#buttonNextAssignee2&quot;).set(&quot;visible&quot;,true);&#xD;
view.get(&quot;#buttonPreviousAssignee2&quot;).set(&quot;visible&quot;,false);&#xD;
view.get(&quot;#buttonFinishAssignee2&quot;).set(&quot;visible&quot;,false);&#xD;
&#xD;
&#xD;
</ClientEvent>
<ClientEvent name="onCreate">self.$show=function(config){&#xD;
if(!config.callback){&#xD;
dorado.MessageBox.alert(&quot;请先定义一个callback函数&quot;);&#xD;
return;&#xD;
}else{&#xD;
self.callback=config.callback;&#xD;
}&#xD;
if(config.caption){&#xD;
self.set(&quot;caption&quot;,config.caption);&#xD;
}&#xD;
if(config.width){&#xD;
self.set(&quot;width&quot;,config.width);&#xD;
}&#xD;
if(config.height){&#xD;
self.set(&quot;height&quot;,config.height);&#xD;
}&#xD;
self.show();&#xD;
}</ClientEvent>
<Property name="width">500</Property>
<Property name="height">450</Property>
<Property name="modal">true</Property>
<Property name="center">true</Property>
<Property name="caption">指定一个参与者</Property>
<Buttons>
<Button id="buttonNextAssignee2">
<ClientEvent name="onClick">&#xD;
var entity=view.get(&quot;#dataSetProcessAssigneeInfo&quot;).getData(&quot;#&quot;);&#xD;
if(!entity){&#xD;
dorado.MessageBox.alert(&quot;请选择分配类型信息!&quot;);&#xD;
}else{ &#xD;
if(entity.get(&quot;tree&quot;)==false){ &#xD;
var ds=view.get(&quot;#dataSetProcessGridAssignee2&quot;);&#xD;
ds.set(&quot;parameter&quot;,{&#xD;
providerId:entity.get(&quot;providerId&quot;),&#xD;
parentId:null&#xD;
}).flushAsync();&#xD;
view.get(&quot;#buttonFinishAssignee2&quot;).set(&quot;visible&quot;,true);&#xD;
view.get(&quot;#buttonNextAssignee2&quot;).set(&quot;visible&quot;,false);&#xD;
view.get(&quot;#buttonPreviousAssignee2&quot;).set(&quot;visible&quot;,true);&#xD;
view.get(&quot;#cardBookAssignee2&quot;).set(&quot;currentIndex&quot;,1);&#xD;
}&#xD;
}&#xD;
&#xD;
</ClientEvent>
<Property name="caption">下一步</Property>
<Property name="icon">url(>skin>common/icons.gif) -140px -280px</Property>
</Button>
<Button id="buttonPreviousAssignee2">
<ClientEvent name="onClick">view.get(&quot;#buttonNextAssignee2&quot;).set(&quot;visible&quot;,true);&#xD;
view.get(&quot;#buttonFinishAssignee2&quot;).set(&quot;visible&quot;,false);&#xD;
view.get(&quot;#buttonPreviousAssignee2&quot;).set(&quot;visible&quot;,false);&#xD;
view.get(&quot;#cardBookAssignee2&quot;).set(&quot;currentIndex&quot;,0);&#xD;
</ClientEvent>
<Property name="caption">上一步</Property>
<Property name="icon">url(>skin>common/icons.gif) -120px -280px</Property>
<Property name="hideMode">display</Property>
<Property name="visible">false</Property>
</Button>
<Button id="buttonFinishAssignee2">
<ClientEvent name="onClick">var index=view.get(&quot;#cardBookAssignee2&quot;).get(&quot;currentIndex&quot;),&#xD;
dialog=view.get(&quot;#dialogChangeTaskAssignee&quot;),&#xD;
data=[];&#xD;
if(index==1){&#xD;
data=view.get(&quot;#dataGridProcessAssignee2&quot;).get(&quot;selection&quot;);&#xD;
}else if(index==2){&#xD;
//var nodes=view.get(&quot;#dataTreeProcessAssignee&quot;).getCheckedNodes(false);&#xD;
//if(nodes){&#xD;
// nodes.each(function(node){&#xD;
// data.push(node.get(&quot;data&quot;));&#xD;
// });&#xD;
//}&#xD;
}&#xD;
if(data.length==0){&#xD;
dorado.MessageBox.alert(&quot;请选择参与者!&quot;);&#xD;
}else{ &#xD;
//console.log(data);&#xD;
//dorado.MessageBox.alert(data.id);&#xD;
dialog.callback(data);&#xD;
}&#xD;
</ClientEvent>
<Property name="caption">完成</Property>
<Property name="icon">url(>skin>common/icons.gif) -20px -0px</Property>
<Property name="hideMode">display</Property>
<Property name="visible">false</Property>
</Button>
</Buttons>
<Children>
<CardBook id="cardBookAssignee2">
<Panel>
<Property name="caption">第一步,选择处理人类型</Property>
<Buttons/>
<Children>
<DataSet id="dataSetProcessAssigneeInfo2">
<Property name="dataType">[dataTypeProcessAssigneeInfo]</Property>
<Property name="dataProvider">ufloDesignerMaintain#findAssigneeInfos</Property>
</DataSet>
<DataListBox>
<Property name="dataSet">dataSetProcessAssigneeInfo</Property>
<Property name="property">name</Property>
</DataListBox>
</Children>
<Tools/>
</Panel>
<Panel>
<Property name="caption">第二步,选择具体处理人</Property>
<Buttons/>
<Children>
<DataSet id="dataSetProcessGridAssignee2">
<Property name="dataType">[dataTypeProcessAssignee]</Property>
<Property name="dataProvider">ufloDesignerMaintain#loadGridAssignees</Property>
<Property name="pageSize">15</Property>
<Property name="loadMode">manual</Property>
</DataSet>
<ToolBar>
<DataPilot>
<Property name="dataSet">dataSetProcessGridAssignee</Property>
</DataPilot>
</ToolBar>
<DataGrid id="dataGridProcessAssignee2">
<Property name="dataSet">dataSetProcessGridAssignee2</Property>
<Property name="selectionMode">singleRow</Property>
<Property name="readOnly">true</Property>
<RowSelectorColumn/>
<DataColumn>
<Property name="align">center</Property>
<Property name="property">id</Property>
<Property name="name">id</Property>
<Property name="caption">用户名</Property>
</DataColumn>
<DataColumn>
<Property name="name">name</Property>
<Property name="align">center</Property>
<Property name="property">name</Property>
<Property name="caption">登录名</Property>
</DataColumn>
</DataGrid>
</Children>
<Tools/>
</Panel>
</CardBook>
</Children>
<Tools/>
</Dialog>
</Container>
<Panel>
<Buttons/>
<Children>
<TabControl id="tabControl1">
<ControlTab>
<Property name="caption">基本信息</Property>
<IFrame id="iframejbxx"/>
</ControlTab>
<ControlTab>
<Property name="caption">正文内容</Property>
<IFrame id="iframeZwnr"/>
</ControlTab>
</TabControl>
</Children>
<Tools/>
</Panel>
</View>
</ViewConfig>

要回复问题请先登录注册