2013-08-27 78 views
1

我一直試圖在GridView中使用數組元素填充DropDownList。該陣列由列名從另一個GridView控件.The數組元素似乎可以從其源中的列名,但我無法弄清楚如何給這對dropdownlist.Here是我的代碼 - :在GridView中使用數組元素填充DropDownList

public partial class Default2 : System.Web.UI.Page 
    { 
    protected void Page_Load(object sender, EventArgs e) 
    { 
    string[] excel = new string[250]; 
    DataTable dtt = (DataTable)Session["griddata"]; //griddata is the gridview data from another page   
    for (int i = 0; i < dtt.Columns.Count; i++) 
    { 
     excel[i] = dtt.Columns[i].ColumnName; 
    } 
    Session["exceldata"] = excel; 
    ArrayList mylist= (ArrayList)Session["exceldata"]; 
    DropDownList drd = (DropDownList)GridView2.FindControl("DrdDatabase"); 
    drd.DataSource = mylist; 
    drd.DataTextField = "GridView"; 
    drd.DataBind(); 
    } 

感謝提前:)

回答

0

你可以簡單地循環播放,並添加ListItems編程:

DropDownList drd = (DropDownList)GridView1.FindControl("DrdDatabase"); 
foreach(string colName in mylist) 
    drd.Items.Add(new ListItem(colName)); 

但是,你一定要找到你通過GridView1.FindControlDropDownList?我假設你在那裏得到NullRefernceException。然後你需要告訴我們它在哪裏。

如果是在一個TemplateFieldGridView你應該使用RowDataBound事件:

private ArrayList ExcelData 
{ 
    get { 
     object excel = Session["exceldata"]; 
     if (excel == null) Session["exceldata"] = new ArrayList(); 
     return (ArrayList)Session["exceldata"]; 
    } 
    set { 
     Session["exceldata"] = value; 
    } 
} 

protected void GridView2_RowDataBound(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     DropDownList ddl = (DropDownList)e.Row.FindControl("DrdDatabase"); 
     foreach (string colName in ExcelData) 
      ddl.Items.Add(new ListItem(colName)); 
    } 
} 
+0

非常感謝您的幫助Tim。但沒有rowdatabound事件,因此gridview無法顯示(因爲目前還沒有數據)。是否有方法在此gridview中顯示下拉列表。 非常感謝! – rawatdeepesh

+0

@rawatdeepesh:爲每個GridViewRow觸發'RowDataBound',包括'Header','Footer','DataRow'(對每個數據行重複),'EmptyDataRow','Pager'和'Separator'。所以你必須把下拉列表放在header/footer/pager或EmptyDataTemplate中。或者根本不要把它放到GridView中。 –

+0

Great Tim Schmelter。你節省了我的時間。 –

0

這裏是你可以用它來填充下拉列表的邏輯。 - >

Loop at the array. 
{ 
For each item in array 
    { 
    add item to dropdownlist.items 
    } 
} 

對不起,因爲我沒有在我手上.NET編輯器,但現在你可以用邏輯來實現它沒有提供確切的代碼。

關於。