ASP.NET DataGrid - DropDownLists在不同的行中?

时间:2009-03-18 15:37:26

标签: asp.net datagrid

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

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

例如:

第一排: --- 3 DropDownLists每个都有四个选项:苹果,橘子,苹果和橘子,都不是

第二排: --- 3 DropDownLists每个都有四个选项:葡萄,樱桃,葡萄和樱桃,都不是

所以我想知道实现这一目标最无痛的方法是什么。我认为解决方案与DropDownList的DataSource和DataTextField和/或DataValueField属性有关。但是,如果我在DataSource中放置一个函数,我不知道如何将行索引传递给它,以便知道要返回哪个列表。使用ItemTypes(Item,AlternatingItem)也可能会有一个解决方案,但最好如何使用它们?

3 个答案:

答案 0 :(得分:2)

添加Ken Browning的回复(如果我理解他的话)。

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

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

如果您将控件添加到Row建议的RowDataBound事件中的单元格,请将DropDownList添加到列表中,并且您将能够在回发后迭代它们。

我希望有所帮助!

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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