1

这是我按字母顺序排序的逻辑

  string selectedVal = lstSelectionTags.SelectedValue;
        SortedList sortedItems = new SortedList();
        for (int i = 0; i < lstSelectionTags.Items.Count; i++)
        {
            sortedItems.Add(lstSelectionTags.Items[i].Text, lstSelectionTags.Items[i].Value);
        }
        lstSelectionTags.Items.Clear();
        lstSelectionTags.DataSource = sortedItems;
        lstSelectionTags.DataTextField = "key";
        lstSelectionTags.DataValueField = "value";
        lstSelectionTags.DataBind();

当我使用下面的代码第一次在我的列表框中显示项目时

   string valueField = Convert.ToString(lstSelectionSub.SelectedItem);
            int catID = Convert.ToInt32(lstSelectionSub.SelectedValue);
            util = new Utilities();
            dt1 = util.GetSubTags_PD(catID, false);
            string[] lines = new string[100];
            List<string> lines1 = new List<string>();

            for (int i = 0; i < dt1.Rows.Count; i++)
            {
                string s1 = dt1.Rows[i][0].ToString();

                if (s1 != "")
                {
                    lines = Regex.Split(s1, ",");

                    if (!lines1.Contains(lines.ToString()))
                    {
                        lines1.AddRange(lines);
                    }
                }
            }

            lstSelectionTags.DataSource = lines1.Distinct();

            lstSelectionTags.DataBind();

它最初工作正常并显示数据,但是当我进行排序然后尝试访问值时,我在ListBox

编辑:排序后的排序似乎有一些问题,列表框有一个键和值作为 DataValue 和 DataText 字段,而当我重新绑定它时,没有 DataValue 和 DataText 字段。请帮忙。

问题已解决:刚刚使用

                if (lines1.Count > 0)
                {
                    lstSelectionTags.DataSource = null;
                    lstSelectionTags.Items.Clear();

                    lstSelectionTags.DataSource = lines1.Distinct();

                    lstSelectionTags.DataTextField = null;
                    lstSelectionTags.DataValueField = null;
                    lstSelectionTags.DataBind();
                }
4

0 回答 0