这似乎是一种奇怪的请求,但是我希望在用户点击列表框之外,而不是在用户选择/取消选择项目时,阻止选择索引更改的自动回复。
这样的事情可能吗?我问的原因是我有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() + ", ";
}
}
答案 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>