【问题标题】:ASP.NET DataGrid - DropDownLists in separate rows?ASP.NET DataGrid - DropDownLists 在单独的行中?
【发布时间】:2010-10-14 02:45:54
【问题描述】:

我有一个包含 3 个 DropDownLists 的 Datagrid。虽然它是一个 DataGrid,但它实际上只有两行。我在代码中使用 DataTable 填充 BoundColumns。

通常,设置和创建两行、保存两行值并稍后检索它们不是问题。但事实证明,我的每一行都必须有不同的列表

例如:

第一行: --- 3 个 DropDownLists 每个都有四个选项:Apples、Oranges、Apples 和 Oranges,两者都没有

第二行: --- 3 个 DropDownLists 每个都有四个选项:葡萄、樱桃、葡萄和樱桃,都没有

所以我想知道完成此任务的最轻松的方法是什么。我认为解决方案与 DropDownList 的 DataSource、DataTextField 和/或 DataValueField 属性有关。但是,如果我在 DataSource 中放置一个函数,我不确定如何将行索引传递给它,以便它知道要返回哪个列表。使用 ItemTypes (Item, AlternatingItem) 也可能有一个解决方案,但如何最好地使用它们?

【问题讨论】:

    标签: asp.net datagrid


    【解决方案1】:

    补充 Ken Browning 的回答(如果我理解正确的话)。

    如何创建一个从 Datagrid 继承的新控件。在该控件中,有一个公共的通用下拉列表:

    public List<DropDownList> FruitLists
    {
        get;set;
    }
    

    如果您像 Ken 建议的那样将控件添加到 RowDataBound 事件中的单元格,请将 DropDownList 添加到列表中,您将能够在回发后遍历它们。

    希望对你有帮助!

    【讨论】:

      【解决方案2】:

      通常,当您需要在不同行上使用不同的行为时,最好的方法是使用 RowDataBound 事件。此事件将允许您检查行的 DataItem 以有条件地绑定模板列中的任何控件。

      【讨论】:

        【解决方案3】:

        您必须检查事件 RowdataBound 事件并在其中检查下拉列表,或者您可以在源代码中使用标签 AlternatingItem,在这种情况下,您有两行与网格重复并将每个下拉列表的 #Eval 设置为您想要从数据源中获得的适当数据,或者如果项目是静态的,则为其赋予其值

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-08-30
          • 1970-01-01
          • 2011-12-14
          • 1970-01-01
          • 2021-06-21
          相关资源
          最近更新 更多