asp:列表框,在点击外面之前不要自动回复

时间:2017-03-17 18:06:57

标签: c# jquery asp.net listbox autopostback

这似乎是一种奇怪的请求,但是我希望在用户点击列表框之外,而不是在用户选择/取消选择项目时,阻止选择索引更改的自动回复。

这样的事情可能吗?我问的原因是我有following plug in用于多选下拉列表。

就像现在一样,每次用户选择项目时,autopostback都会关闭下拉列表,并且索引已成功更改。但是,如果我关闭autopostback,它会保持打开状态以允许用户选择多个项目,但它不会注册为已选择。

如果有人能提出这样做​​的方法,我将永远感激不尽。非常感谢提前。

我会在下面的多选中发布我的asp.net和c#codebehind。

ASP.NET

<asp:UpdatePanel ID="UpdatePanel2" runat="server">
                            <ContentTemplate>
                                <asp:ListBox ID="DependenciesListBox" runat="server" SelectionMode="Multiple" Width="300px" CssClass="search-box-sel-all" multiple="multiple" placeholder="Select Child Dependencies" ToolTip="Items that depend on this currency item" AutoPostBack="True" OnSelectedIndexChanged="DependenciesListBox_SelectedIndexChanged"></asp:ListBox>
                            </ContentTemplate>
                        </asp:UpdatePanel>

C#

protected void DependenciesListBox_SelectedIndexChanged(object sender, EventArgs e) {
    ChildLabel.Text = "";
    foreach (ListItem item in DependenciesListBox.Items) {
        if (item.Selected)
            ChildLabel.Text += item.ToString() + ", ";
    }
}

2 个答案:

答案 0 :(得分:0)

   <asp:ListBox ID="DependenciesListBox" runat="server" SelectionMode="Multiple" Width="300px" CssClass="search-box-sel-all" multiple="multiple" placeholder="Select Child Dependencies" ToolTip="Items that depend on this currency item" AutoPostBack="False" onchange="clientListChanged(this);" OnSelectedIndexChanged="DependenciesListBox_SelectedIndexChanged"></asp:ListBox>


//Java script code
     function clientListChanged(el)
     {
      if ( el.value == '1' ) // for all indexes you dont want to post back add condition
      { 
       return false;
      } 
      return true; //else postback
     }

当用户在框外点击并回复帖子时,请使用onblur事件。我不确定它是否允许使用列表框进行html标记;如果没有通过代码添加使用attributes.add作为列表框。然后你可以在asp引号中使用__doPostBack(elementName.ClientId)发布到服务器

注意:我没有测试代码是否存在错误或语法问题。我刚刚在编辑器中写下来了。所以请修复您找到的任何错误。

答案 1 :(得分:0)

我不知道完美答案,

但这对我有用,我希望它对你有用

使用updatepanel触发器

<Triggers>
<asp:AsyncPostBackTrigger
ControlID="DependenciesListBox"
EventName="SelectedIndexChanged
="SelectedIndexChanged" />
</Triggers>