【问题标题】:Bound DropDownList of "unused" items plus current row item in EditItemTemplate of GridView?在GridView的EditItemTemplate中绑定“未使用”项目的DropDownList加上当前行项目?
【发布时间】:2011-01-16 01:30:22
【问题描述】:

我有 2 个具有唯一 ID 的表,它们可以相互映射(一个表来自我的应用程序外部的数据库,但包含有关我正在跟踪的相同实体的信息)。我想提供一个 UI 用于将“我的”记录与“其他”记录链接起来,这样我就可以将“其他”ID 存储在我的表中以用于匹配记录。简而言之,关键的 UI 元素是一个下拉列表,显示“其他”表中可用的(即尚未链接的)记录。

我有一个用于在每一行中显示“我的”记录的网格视图,以及一个显示“其他”表中链接记录的一些信息的列,如果有的话。这些数据是关于建筑物和属性的,因此可能如下所示:

Building1   Dallas   TX    Building1_Dallas_TX
Building2   Memphis  TN    Bldg2_Memphis_TN
Building3   Denver   CO
Building4   Seattle  WA
Building5   Boston   MA    Building5_Boston_MA

其中前 3 列显示“我的”表中的一些信息,最后一列显示“其他”表中的匹配记录,其中记录已被链接,否则为未建立链接的空白。我的实际 gridview 有几个来自“我的”表的列,但这足以说明需要。

当为一行单击编辑(未显示)时,我希望能够编辑所有 4 列。前 3 个是文本框;最后一列应该是一个下拉列表,显示“其他”表中的所有未链接记录,加上一个“未分配”选项(作为列表中的第一项),所以记录可以“取消链接”或简单地保持未分配,加上(对于那些已经建立链接的行)链接的项目(它是“使用的”但它需要在那里,以便他们可以继续使用它)。

我可以在 gridview RowEditing 事件的代码隐藏中正确填充下拉列表(除了我在 .aspx 中添加为 ListItem 且 AppendDataBoundItems 选项设置为 true 的未分配项),并且我可以设置正确的 SelectedValue on ddl 的 DataBound 事件,但是在回发时,当我单击更新行时,ddl 中不再有任何项目(未分配项目除外),因此链接始终被清除。如果我通过直接编辑我的表手动设置链接,进入编辑模式一切看起来都很好——ddl 中包含正确的项目并且它预先选择了正确的项目,但是在更新回发时一切都丢失了。我已尝试在页面周期的各个阶段重新绑定 ddl,但显然我还不太了解该周期,因为我无法弄清楚如何让用户选择的项目更新我的表格。

我也尝试使用 SqlDataSource SelectCommand 填充 ddl,但没有运气包括其他数据库中当前链接记录的 ID(即使它在“我的”表中可用并且我将其设置为 GridView DataKey 并将其添加为 SqlDataSource 的 SelectParameters 中的 ControlParameter。没有 ddl 项列表中的当前链接记录,我无法保留现有链接。

我暂时不发送代码示例——这条消息已经太长了! -- 希望从我所描述的内容中可以看出解决方案...我不认为我的目标很奇怪,但我愿意接受其他方面的说服。

非常感谢!

克里斯

【问题讨论】:

    标签: asp.net gridview drop-down-menu edititemtemplate


    【解决方案1】:

    好的,我不会详细介绍代码,因为也许您已经完成了我将要建议的操作。

    对于最后一列,下拉列表,您必须执行 SQL 语句来获取未链接的项目。使用“WHERE xx NOT IN”。对于“未分配”选项,只需在与上述相同代码范围内的列表中添加一项即可。

    下一步是手动处理 GridView 的编辑事件。插入、更新和删除。

    我认为这样你不会有问题。

    【讨论】:

    • 虽然细节上的答案并不长,但我大致是这样处理的。更详细:
    • 我大致就是这样进行的。具体来说,我在 GridView 的 RowEditing 处理程序中指定下拉菜单的 SelectCommand SQL,而不是声明式地组装未链接的记录,加上现有链接(如果有)和未分配的选项;无论是否选择了链接,这些选项都满足数据绑定。自从我发布以来已经有很长时间了,所以我不是 100% 确定,但我认为当我切换到 SQL 而不是 AppendDataBoundItem 的“未分配”项目时,回发的(几乎)空下拉列表的问题消失了.
    猜你喜欢
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    • 1970-01-01
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    相关资源
    最近更新 更多