将数据绑定到30个下拉列表的最简单方法是什么?

时间:2011-04-29 14:45:26

标签: asp.net drop-down-menu

我的问题非常简单。这是我的情景:

  1. 我有1个结果数据集[named =“resultDS”typed =“MyDataset”]和1个数据表[MyDT]。
  2. 在datatable中,我有10行,每行有3列[Column1,Column2,Column3]
  3. 在aspx页面上,我有30个drowdownlists等待上面的数据
  4. dataTable中的数据将是:

    Column1 | Column2 |栏3

    Method1 | 100 | 0.5

    方法2 | 125 | 0.75

    方法3 | 80 | 0.4

    。 。

    方法30 | 200 | 1

    目前,我使用最简单的方法来绑定数据。类似的东西:

    ddl1.SelectedValue = ((MyDataSet.MyDTRow)resultDS.MyDT.Rows[0]).Column1;
    ddl2.SelectedValue = ((MyDataSet.MyDTRow)resultDS.MyDT.Rows[0]).Column2;
    ddl3.SelectedValue = ((MyDataSet.MyDTRow)resultDS.MyDT.Rows[0]).Column3;
    
    ddl4.SelectedValue = ((MyDataSet.MyDTRow)resultDS.MyDT.Rows[1]).Column1;
    ddl5.SelectedValue = ((MyDataSet.MyDTRow)resultDS.MyDT.Rows[1]).Column2;
    ddl6.SelectedValue = ((MyDataSet.MyDTRow)resultDS.MyDT.Rows[1]).Column3;
    .
    .
    .
    ddl30.SelectedValue = ((MyDataSet.MyDTRow)resultDS.MyDT.Rows[9]).Column3;
    

    有没有办法将数据绑定到我的ddl比我当前的方法更容易?

    谢谢。

    VCHA

2 个答案:

答案 0 :(得分:1)

假设代码中的最后一行有Rows[9]

您可以尝试循环

for (int i=0; i<30; i++)
{
   DropDownList ddl = (DropDownList) FindControl("ddl"+(i+1));

   switch (i % 3)
   {
      case 0:
          ddl.SelectedValue =  ((MyDataSet.MyDTRow)resultDS.MyDT.Rows[i/3]).Column1;
          break;
      case 1:
          ddl.SelectedValue =  ((MyDataSet.MyDTRow)resultDS.MyDT.Rows[i/3]).Column2;
          break;
      case 2:
          ddl.SelectedValue =  ((MyDataSet.MyDTRow)resultDS.MyDT.Rows[i/3]).Column3;
          break;
    }
}

答案 1 :(得分:0)

我会在数据绑定控件中设置它,例如ListViewGridView

这将允许您创建将重复的3 ddls,然后将SelectedItemValue绑定到您的列。

我根据您所展示的内容做出一些假设,这对您有用。如果ddls遍布整个站点,那么它可能不会。