代码之家  ›  专栏  ›  技术社区  ›  Chris Cudmore

下拉列表、列表项和选择编辑项

  •  2
  • Chris Cudmore  · 技术社区  · 15 年前

    参见: Dropdowns filled with same list item

    经过一天的跟踪和调试,我终于发现用相同的项集合填充3个dropdownlists会导致最后选择的项出现在所有3个列表中。

    这似乎是由于项的“选择性”是项的属性,而不是列表的属性。

    然而,情况似乎是这样的 只有 以编程方式选择项时。

    编辑2:似乎每个人都在回答错误的问题:下面是让我困惑的地方!

    当用户通过控件选择项时,应用程序似乎按预期工作。--在web界面中选择3个不同的项将导致在db中输入正确的3个不同项。

    有谁能解释为什么会这样?

    编辑:我要问的问题是为什么它在浏览器中工作?

    2 回复  |  直到 15 年前
        1
  •  3
  •   Jason    15 年前

    这是因为您将同一列表项添加到两个不同的dropdownlist控件。它们中显示的对象是相同的,因此更改该对象的值将反映在两个下拉列表中。

    把下拉列表看作是查看对象集合的一种方式。你戳了一下下拉列表,告诉它更改它的选定值,实际上只会导致它在其集合中的项目之间循环并更改 他们的 选择值。如果对两个下拉列表使用相同的对象集合,则更改集合中的值将导致两个下拉列表看到相同的更改。

    就像一个房子里有两扇窗户,两扇窗户都可以看到同一个狗屋。如果你告诉一个从A窗口向外看的人去把狗屋漆成蓝色,即使你没有告诉从B窗口向外看的人把“他的”狗屋漆成蓝色,他还是会看到一个蓝色的狗屋。

        2
  •  0
  •   Thies    15 年前

    这与bindingContext和集合有关。你需要复制这些收藏品并与之绑定。我认为这样做是为了让母子观更容易,在那里你可以得到正确的子元素,基于选定的母亲元素。

    如果集合是datatable,则将dropdownlist绑定到该集合将使用其defaultview。要避免这种情况,请将表打包到dataviews中;

    obj.datasource=新建数据视图(datatable,“,”,dataviewRowsState.currentRows);