0

sqldatasource から入力された 6 つのドロップダウン リストがあります。いくつかの行を返す別の sqldatasource もあります。私がやりたいことは、2 番目のデータソースの各行を調べて、ドロップダウンでその値を選択することです。たとえば、2 番目のデータソースに 3 つの行が含まれている場合、最初の 3 つのドロップダウンリストで適切な値を選択し、その他を「N/A」に設定します。

ここに私が考えたいくつかの擬似コードがあります

protected void fileattributes_ItemDataBound(object sender, ListViewItemEventArgs e)
{
        DropDownList kw1 = (DropDownList)e.Item.FindControl("keyw1");
        DropDownList kw2 = (DropDownList)e.Item.FindControl("keyw2");
        DropDownList kw3 = (DropDownList)e.Item.FindControl("keyw3");
        DropDownList kw4 = (DropDownList)e.Item.FindControl("keyw4");
        DropDownList kw5 = (DropDownList)e.Item.FindControl("keyw5");
        DropDownList kw6 = (DropDownList)e.Item.FindControl("keyw6");

        DropDownList[] array = { kw1, kw2, kw3, kw4, kw5, kw6 };

        for(int i = 0; i<sqldatasource2.length;i++)
        {            
              array[i].SelectedItem.Text = sqldatasource2.item    
        }

        foreach(Array a in array)
        {    
              if (a is null)
              {    
                   a.selecteditem.text = "N/A";
              }        
        }        
}    
4

2 に答える 2

1

私は sqldatasource を直接操作した経験があまりないので、DataTable に結果セットを入力しました。これがうまくいくことを願っています!

    DropDownList kw1 = (DropDownList)e.Item.FindControl("keyw1");
    DropDownList kw2 = (DropDownList)e.Item.FindControl("keyw2");
    DropDownList kw3 = (DropDownList)e.Item.FindControl("keyw3");
    DropDownList kw4 = (DropDownList)e.Item.FindControl("keyw4");
    DropDownList kw5 = (DropDownList)e.Item.FindControl("keyw5");
    DropDownList kw6 = (DropDownList)e.Item.FindControl("keyw6");

    DropDownList[] array = { kw1, kw2, kw3, kw4, kw5, kw6 };

    DataView dv = new DataView();
    DataTable dt = new DataTable();    
    dv = (DataView)SqlDataSource1.Select(DataSourceSelectArguments.Empty);
    dt = dv.ToTable();

    int i = 0;
    foreach (DataRow dr in dt.Rows)
    {
        // dr["column name or column index"] (zero in my case)
        array[i].SelectedItem.Text = dr[0].ToString();
        i++;
    }
于 2012-11-16T01:03:09.877 に答える
1
DataSourceSelectArguments args = new DataSourceSelectArguments();
DataView view = (DataView)SqlDataSource1.Select(args);
DataTable dt = view.ToTable();

DropDownList[] array = { kw1, kw2, kw3, kw4, kw5, kw6 };
int i;
for (i = 0; i < dt.Rows.Count;i++ )
{
    array[i].SelectedItem.Text = dt.Rows[i][0].ToString();
}

// If array length (number of DropDowns) is greater than rows in datasource
// Remaining Dropdowns will get text N/A --- Now i=dt.Rows.Count
for (; i < array.Length; i++)
{
    array[i].SelectedItem.Text = "N/A";
}
于 2012-11-16T07:04:46.093 に答える