考虑的出发点时:
1、用多态性,自动匹配数据源
2、使用TreeView显示参数的层次结构。
3、统一显示的风格
步骤:
编辑页就作为XXXEdit.aspx父页面,弹出页OpenDialog.aspx为子页。
1、父页中增加JS
<script type="text/javascript">
function OpenDialog(type, objKey, objKeyText){
var key = document.getElementById(objKey);
var keyText = document.getElementById(objKeyText);
var url = "../DialogBox/OpenDialog.aspx?type="+ type +"&key="+ key.value +"&rnd="+ Math.random();
var arr = showModalDialog(url ,'','dialogHeight:300px;dialogWidth:480px;center: yes; help: no;resizable: no; status: no;');
if (arr != null){
key.value = arr[0];
keyText.value = arr[0] +"-"+ arr[1];
}
return false;
}
2、子页实现取数据,TreeView展现,节点显示Checkbox(用作单选操作),返回数据
(子页的多态实现在下一步实现)
设置返回的脚本(不想在服务器处理)
txtNodeValue、txtNodeText是记录勾选treeview的节点内容
function SubmitForm()
{
var nodeValue = document.getElementById("txtNodeValue");
var nodeText = document.getElementById("txtNodeText");
if(nodeValue.value == "" || nodeText.value == "")
{
alert("未指定任何的选项!");
return false;
}
var rtnValue = new Array(nodeValue.value, nodeText.value);
window.returnValue = rtnValue;
window.opener = null;
window.close();
}
整个过程是实现了,但由于2.0的原因,产出一个问题:
由于在父页中设置了有选择功能的Textbox的ReadOnly = true,结果在刷新后,就不显示返回值了和从客户端传回的新的值是不被设置到Text属性的。(在以前的ASP.NET 1.x版本中,是没问题的,不清楚MS为何更改了。害我还以为是返回刷新导致数据丢失的,白折腾N久)。
查了网上资料,说用ContentEditable=“false”可以解决。的确是的。但Studio却显示非有效属性。郁闷
主要问题解决了,仍剩下一个"非有效属性"的尾巴。
下一步主要工作是实现OpenDialog.aspx中的数据源的多态性问题。