【问题标题】:ASP Multiselect listbox separatorASP 多选列表框分隔符
【发布时间】:2011-09-19 21:35:02
【问题描述】:

我遇到了一个问题,我还没有找到任何灵魂。让我稍微简化一下。

我有 2 个表单,第一个包含一个启用多选模式的 ASP ListBox。我提交了表单,并以我仅用于测试目的的其他表单提交了这段代码:

protected void Page_Load(object sender, EventArgs e)
    {
        foreach (string formKey in Request.Form.AllKeys)
        {
            if (formKey != null)
            {
                if (formKey.Equals("ctl00$MainContent$ListBox1"))
                    Label1.Text = Request.Form[formKey];
            }
        }  
    }

问题是来自列表框的值(我在以前的表单中选择的值)用“,”分隔,例如。 “测试1,测试2,测试3”。例如,如何将此分隔符更改为“$”?我需要更改它,因为实际值可能包含“,”并且我不会手动将它们提供给列表框。

我不能使用任何其他模式在表单之间传输此值,因为整个应用程序都使用此模型。然后我得到的值被发送到一个工作流,在那里将被操纵,在工作流中我需要知道每个列表框项目的开始和结束位置,所以它必须是一个唯一的分隔符。

感谢任何帮助!非常感谢


感谢 MatteKarla,但不幸的是,这并不能解决我的问题。是的,这是将值从一种形式转移到另一种形式的好方法。

但是,我必须将上面描述的方法与请求表单键一起使用,因为列表框是在运行时生成的许多其他“参数”之一,并将它们的值发送到采用该值的工作流方法。而且我无法在我的应用程序中更改它。

我的问题是逗号(“,”)分隔符默认用于多选列表框。

我认为可能有一种方法可以将该分隔符从逗号更改为另一个字符,因为逗号也可以包含在值本身中,这会造成混乱。

正如我所说,如果我选择三个值 test1test2test3,我的方法的结果将是一个看起来像 "test1,test2,test3" 的字符串。不过"test1$test2$test3" 会好很多。

但我担心更改此默认分隔符是不可能的。我必须考虑一种解决此问题的方法,例如在将值中的所有预期昏迷与其他字符提供给列表框之前进行替换,以免造成混淆。但这不是一个很好的方法。

【问题讨论】:

  • 看看我上次的编辑。 FindControl 也许可以工作?

标签: asp.net listbox multi-select separator


【解决方案1】:

在您的第一页/表单 (First.aspx.cs) 上,使用列表框创建一个公共属性:

public ListBox PostedListBox { get { return ListBox1; } }

将按钮的 postback-url 设置为 Second.aspx

@Page-directive 添加后的 aspx 文件中的第二页:

<%@ PreviousPageType VirtualPath="~/First.aspx" %>

然后在Form_Load 上的Second.aspx.cs 中,您可以提取值:

if (PreviousPage != null)
{
    ListBox postedListbox = PreviousPage.PostedListBox;
    foreach (var index in postedListbox.GetSelectedIndices())
    {
        var itemText = postedListbox.Items[index].Text;
    }
}

或者您可以尝试使用以下方法定位控件:

if (PreviousPage != null)
{
  var control = PreviousPage.FindControl("ListBox1") as ListBox;
}

第三次编辑:

您可以使用 GetValues:

Request.Form.GetValues("ctl00$MainContent$ListBox1");

返回一个包含每个选定项的字符串数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-04-23
    • 1970-01-01
    • 1970-01-01
    • 2013-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多