我在用dotnet做一个项目的过程中遇到了一个ListBox的问题通过在一个ListBox中双击把选中的项添加到另一个ListBox中但ListBox控件本身并没有该事件那么如何实现呢?我就想到了客户端脚本javascrit通过查阅相关资料终于把这个问题解决了现在写出来与大家分享希望能对大家有所帮助
这里有三个问题
第一双击所要执行的javascript代码是什么?
注意javascript代码的语法要正确即每一行都要以结尾
function change()
{
var addOption=documentcreateElement(option);
var index;
if(documentFormListBoxlength==)return(false);
index=documentFormListBoxselectedIndex;
if(index<)return(false);
addOptiontext=documentFormListBoxoptions(index)text;
addOptionvalue=documentFormListBoxvalue;
documentFormListBoxadd(addOption);
documentFormListBoxremove (index);
}
第二如何将 javascript 代码转换为C#代码?
public static void ListBox_DblClick(Page pageSystemWebUIWebControlsWebControl webcontrolstring SourceControlNamestring TargetControlName)
{
SourceControlName = documentForm + SourceControlName;
TargetControlName = documentForm + TargetControlName;
string js = <script language=javascript> function change(SourceControlNameTargetControlName);
js += {;
js += var addOption=documentcreateElement( option ); \n;
js += var index; \n;
js += if(SourceControlNamelength==)return(false);\n;
js += index=SourceControlNameselectedIndex; \n ;
js += if(index<)return(false);\n;
js += addOptiontext=SourceControlNameoptions(index)text; \n;
js += addOptionvalue=SourceControlNamevalue; \n;
js += TargetControlNameadd(addOption); \n;
js += SourceControlNameremove (index) \n; js +=};
js += </script>;
//注册该 javascript
pageRegisterStartupScript(js);
//为控件添加双击事件
webcontrolAttributesAdd(onDblClickchange( + SourceControlName + + TargetControlName + ););
}
在该方法中SourceControlName是要绑定双击事件的控件TargetControlName是接收双击事件选定项的控件
这里有一个问题如何让对象作为参数传给javascript的change函数我这里采用的是用SourceControlNameTargetControlName 来传递两个ListBox的Name然后与documentForm组合成一个串来传递给javascript的change函数即
SourceControlName = documentForm + SourceControlName;
TargetControlName = documentForm + TargetControlName;
第三如何为控件添加双击事件?
用ControlNameAttributesAdd(属性名称函数名称或代码);