【问题标题】:select same index in list box在列表框中选择相同的索引
【发布时间】:2013-03-02 23:49:39
【问题描述】:

我在 asp.net 中创建一个网站,我有 2 个列表框:

lbxPlayer1 and lbxPlayer2

lbxPlayer1.Items.Add("bob");
lbxPlayer1.Items.Add("jack");
lbxPlayer1.Items.Add("sam");

lbxPlayer2.Items.Add("fred");
lbxPlayer2.Items.Add("brian");
lbxPlayer2.Items.Add("dave");

它们都填充了相同数量的值,我希望这样当单击其中一个列表时,另一个列表将选择相同的索引。

我该怎么做?我假设代码将在 lbxPlayer1_SelectedIndexChanged 事件中?

所以当我点击“jack”时,我希望“Brian”也被选中。

【问题讨论】:

    标签: c# asp.net selectedindexchanged


    【解决方案1】:

    使用SelectedIndex 属性:

    int index = lbxPlayer1.SelectedIndex;
    if(lbxPlayer2.Items.Count > index)
       lbxPlayer2.SelectedIndex = index;
    

    如果SelectionModeMultiple

    for (int i = 0; i < lbxPlayer2.Items.Count; i++)
    { 
        if(i >= lbxPlayer1.Items.Count)
            lbxPlayer2.Items[i].Selected = false;
        else
            lbxPlayer2.Items[i].Selected = lbxPlayer1.Items[i].Selected;
    }
    

    更新

    好吧,它试过了,什么也没发生也试过这个,什么也没有 发生lbxPlayer2.SelectedIndex = lbxPlayer1.SelectedIndex;。 dayabinding 正在页面加载事件中完成(我无法更改),我>相信它总是o

    只对它们进行数据绑定if(!IsPostBack),因为ViewState 将在回发中保留项目。所以我假设这个事件永远不会被触发,因为你在回发时重新绑定了ListBoxes

    【讨论】:

    • 它没有使用多个,并且您发布的顶级代码不起作用
    • 两个列表具有相同数量的值,所以如果两个列表中都有 10 个项目并且我选择索引 0 处的项目,那么您发布的 if 语句将不会关闭
    • @BrianPeach 为什么会这样? 10 > 0
    • 好吧,它试过了,没有任何反应也试过这个,也没有任何反应:\ lbxPlayer2.SelectedIndex = lbxPlayer1.SelectedIndex;
    • @BrianPeach:当然第二个也不起作用,因为它与我的代码相同,只是没有if。我确定lbxPlayer2.SelectedIndex=0 也不起作用。在您更改 SelectedIndex 之后,您可能正在对 lbxPlayer2 进行数据绑定。这可以解释为什么您不能更改选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-27
    • 2015-03-11
    • 2019-01-18
    相关资源
    最近更新 更多