在双击ListBox时,我想在服务器端对选定项处理,如何实现?
1、ListBox没有ondbclick事件,是否只能通过客户端脚本触发?
2、客户端脚本如何调用服务器端的方法?
3、我想在客户端调用__doPostBack(eventTarget, eventArgument)返回到服务器,__doPostBack的两个参数如何使用?eventTarget是此ListBox的ClintID,eventArgument呢?

解决方案 »

  1.   

    如果只是为了将List里的记录删除和移动,完全可以用javascript实现。
    cs:
    listAll.Attributes["ondblclick"] = "javascript:addSrcToDestList();";
    listBoss.Attributes["ondblclick"] = "javascript:deleteFromDestList();";html:
    <script language="JavaScript">
    <!--
    function addSrcToDestList() {
    listBoss = window.document.forms[0].listBoss;
    listAll = window.document.forms[0].listAll; 
    var len = listBoss.length;
    for(var i = 0; i < listAll.length; i++) {
    if ((listAll.options[i] != null) && (listAll.options[i].selected)) {
    var found = false;
    for(var count = 0; count < len; count++) {
    if (listBoss.options[count] != null) {
    if (listAll.options[i].text == listBoss.options[count].text) {
    found = true;
    break;
          }
       }
    }
    if (found != true) {
    listBoss.options[len] = new Option(listAll.options[i].text,listAll.options[i].value); 
    len++;
             }
          }
       }
       window.document.forms[0].txtHidden.value='';
    for(var i = (len-1); i >= 0; i--) 
    {
    window.document.forms[0].txtHidden.value+=listBoss.options[i].value+',';
       }
    }function deleteFromDestList() 
    {
    var listBoss  = window.document.forms[0].listBoss;
    var len = listBoss.options.length;
    window.document.forms[0].txtHidden.value='';
    for(var i = (len-1); i >= 0; i--) 
    {
    if ((listBoss.options[i] != null) && (listBoss.options[i].selected == true)) 
    {
    listBoss.options[i] = null;
    }
    else
    window.document.forms[0].txtHidden.value+=listBoss.options[i].value+',';
    }
    }
    // -->
    </script>
    <asp:TextBox id="txtHidden" runat="server" Height="0px" Width="0px"></asp:TextBox>
    txtHidden建立起list当前内容和cs之间的联系
      

  2.   

    TO; nswhy(南山翁),
    直接在其事件中写你的程序
    其事件是什么事件?
    ListBox没有ondbclick事件!
      

  3.   

    不清楚,帮你UP
    可不可以自定义ondbclick事件
      

  4.   

    怎么自定义ondbclick事件?
      

  5.   

    我就是想将List里的记录删除和移动
    问题是
    1。客户端实现,保存状态麻烦,页面已提交就丢失状态了
    2。服务器端实现,不知如何响应ondbclick事件
    请高手进来指点一下,说一下思路也行
      

  6.   

    添加一个按钮,然后注册listbox的客户端事件回调BUTTON的事件
    combo.Attributes.Add("onpropertychange",this.Page.GetPostBackEventReference(lb));
    combo是一个控件,lb是一个BUTTON
      

  7.   

    楼上的是一个解决办法。最好是写一个listbox的子类来实现,只要加一个事件就可以了,很简单的
      

  8.   

    ListBox中没有ondbclick事件
    你可以加删除和移动按钮
      

  9.   

    要不你就重写一个LIstbox
    继承ListBox
    加入ONdbclick事件还有一个更简单的方法加入一个服务器控件,设为不可见用Js触发点击事件
      

  10.   

    刚小试了一下,你可以使用Html的Listbox控件上实现!
    html:
    <SELECT size="9" runat="server" id="ListBox1" ondblclick="getitem()" style="WIDTH: 80px; HEIGHT: 150px">
    </SELECT> 
    必须加入runat="server"js:  显示被双击的item的index
    <script>
    function getitem()
    {
         var item=document.activeElement.getAttribute("SelectedIndex");
         alert(item);
    }
    </script>cs:
    protected System.Web.UI.HtmlControls.HtmlSelect ListBox1;
    private void Page_Load(object sender, System.EventArgs e)
    {
    if(!this.IsPostBack)
    {
    BuildListBox();
    }
    }
    private void BuildListBox()
    {
    ListItem item1 = new ListItem("Red", "Red"); 
    ListItem item2 = new ListItem("Blue", "Blue"); 
    ListBox1.Items.AddRange(new ListItem[]{ item1, item2});
    //加入两个item
    }