绑定DropDown的“未使用”项目列表加上GridView的EditItemTemplate中的当前行项目?

时间:2010-02-12 08:11:20

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

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

我有一个gridview用于在每行显示“my”记录,另外还有一列显示“other”表中链接记录的一些信息(如果有的话)。数据与建筑物和属性有关,因此可能如下所示:

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列显示来自“my”表的一些信息,最后一列显示来自“other”表的匹配记录,其中记录已经链接,否则为空白,其中没有建立链接。我的实际gridview还有几个来自“my”表的列,但这足以说明需要。

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

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

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

我暂时不推迟发送代码示例 - 此消息已经太长了! - 希望解决方案从我所描述的内容中显而易见......我不认为我的目标很奇怪,但我愿意被说服否则。

非常感谢提前!

克里斯

1 个答案:

答案 0 :(得分:0)

好的,我不会详细介绍代码,因为可能你已经完成了我要提出的建议。

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

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

我认为你不会有问题。