C# 在双击、Web应用程序而不是Windows窗体上从列表框获取选定值

C# 在双击、Web应用程序而不是Windows窗体上从列表框获取选定值,c#,asp.net,web-applications,listbox,double-click,C#,Asp.net,Web Applications,Listbox,Double Click,我有一个ASP.Net网站,后面有C代码。我试图通过双击asp.net列表框获取所选值。我看到的所有解决方案都是针对Windows窗体的,前提是实际上存在双击事件。列表框的System.Web.UI.WebControls版本没有这样的运气 需要双击来触发代码隐藏中的一个方法,该方法允许我读取所选值 关于这方面有很多帖子,但它们不适用于System.Web.UI.WebControls.ListBox 以下是代码示例: .aspx页面: <%@ Page Language="C#

我有一个ASP.Net网站,后面有C代码。我试图通过双击asp.net列表框获取所选值。我看到的所有解决方案都是针对Windows窗体的,前提是实际上存在双击事件。列表框的System.Web.UI.WebControls版本没有这样的运气


需要双击来触发代码隐藏中的一个方法,该方法允许我读取所选值

关于这方面有很多帖子,但它们不适用于System.Web.UI.WebControls.ListBox

以下是代码示例:

.aspx页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="XXX-AddressBook.aspx.cs" EnableViewState="true" Inherits="VRV_AddressBook" %>

<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>

    <%-- <meta http-equiv="X-UA-Compatible" content="IE=7, chrome=1"/>--%>
    <meta http-equiv="x-ua-compatible" content="IE=edge" />
    <meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" />
    <meta http-equiv="Expires" content="0">
    <meta http-equiv="Cache-Control" content="no-cache">
    <meta http-equiv="Pragma" content="no-cache">

<style>
</style>

<script type="text/javascript">
</SCRIPT>

    <title> Address Book</title>
</head>
<form id="frmAddressBook" runat="server">
<div>
<asp:ListBox ID="lstbxddNames" runat="server"  Rows="17" SelectionMode="Multiple"></asp:ListBox>
</div>
</form>

</body>
</html>
然后,我从未显示的SQL查询代码加载Datatable的内容

    if (Choice.ToUpper() == "GLOBAL")
    {
        lstbxddNames.DataSource = dt_UserRS;
        lstbxddNames.DataTextField = "Name";
        lstbxddNames.DataValueField = "Email";
        lstbxddNames.DataBind();
    }
这是我正在使用的解决方案。我在发帖前确实试过了,但是我把它放在了页面的错误位置,我把它放在了if!IsPostBack部分出错

  protected void Page_Load(object sender, EventArgs e)
        {

            if (Request["__EVENTARGUMENT"] != null && Request["__EVENTARGUMENT"] == "lstdbclick")
            {
                lstbxddNames_DoubleClick(lstbxddNames.SelectedValue.ToString());

              //  string TEST = lstbxddNames.SelectedValue.ToString();
            }
            lstbxddNames.Attributes.Add("ondblclick", ClientScript.GetPostBackEventReference(lstbxddNames, "lstdbclick"));

            if (!IsPostBack)
            {
                ViewState["ViewStateId"] = System.Guid.NewGuid().ToString(); //PART OF PAGE REFRESH DETECTION
                Session["SessionId"] = ViewState["ViewStateId"].ToString();
确保它也会击中该方法:

private void lstbxddNames_DoubleClick(string Value)
{
    if (!String.IsNullOrEmpty(Value))
    {

        string Test = Value;
    }

}
有人能解释一下这里发生了什么事吗? 有一件事我不明白,为什么要添加属性?如果我可以用事件参数检测双击,为什么要添加属性

提前感谢您的帮助


Eric

在列表框循环中,可以将双击事件关联到每个项目。e、 g

 item.Attributes.Add("ondblclick", "functionCall();");

检查下面的链接,这是完美的工作与我

我已经检查了整个代码并实现了我的项目,它正在工作

我希望这对你有帮助


双击什么?听起来很适合JavaScript双击列表框中的项目。我对Javascript很在行,因此使用C解决方案。如果你能让Javascript解决方案成为我的白痴证明,我将欢迎你的帮助!向我提供你的列表框的html标记,我可以做到。需要双击触发代码隐藏中的方法。。。触发方法不需要dbl clk。单击一下就可以了。这是一个多选列表框。如果用户正在选择多个项目,则第一次单击将在选择其余项目之前触发。我不确定是否理解。Listbox循环必须通过双击来启动代码。ListBox没有双击操作。仅供参考:Jobesk-你是说当我填充ListBox时?你是说我可以添加这个属性吗?即使双击没有本机操作?是否要在列表框本身或其项目上创建双击操作?这两种方法都可以,只需在运行时相应地添加属性即可。如何在运行时添加属性,以及在代码中的何处添加属性?您好,该链接有两种解决方案。第一个似乎是一个Javascript,用于查找双击事件并从隐藏值中获取所选项目,并将其显示为警报弹出窗口。我在其他网站上看到了这一点,但始终无法让它发挥作用。此外,我需要在代码隐藏中选择值,而不是作为JavaScript警报框。第二个解决方案是,我尝试在aspx.cs页面上添加我的页面加载。Intellisense不喜欢它,编译时出错。事实上,第二种解决方案有效。我最初把它放在页面加载的错误位置。我把代码贴到了原来的问题上。有人能解释一下这是怎么回事吗?
private void lstbxddNames_DoubleClick(string Value)
{
    if (!String.IsNullOrEmpty(Value))
    {

        string Test = Value;
    }

}
 item.Attributes.Add("ondblclick", "functionCall();");