2012-11-12 169 views
2

我有一個從數據庫填充兩個下拉列表的gridview。一個是描述性名稱,另一個是縮寫名稱。我需要完成以下操作:c#下拉列表selectedindexchanged gridview設置selectedindex第二下拉列表

當我在DDL1中選擇一個項目時,我需要將所選擇的DDL2索引更改爲匹配,反之亦然。

我已經搜索了這裏,發現如下:

protected void ddlAddLabTest_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DropDownList ddlLabTest = (DropDownList)sender; 
    GridViewRow row = (GridViewRow)ddlLabTest.NamingContainer; 
    DropDownList ddlAddLabTestShortName = (DropDownList)row.FindControl("ddlAddShortname"); 

    ddlAddLabTestShortName.SelectedIndex = intSelectedIndex; 
} 

只有當它到達指定爲「行」我收到以下:

Unable to cast object of type 'System.Web.UI.WebControls.DataGridItem' to type 'System.Web.UI.WebControls.GridViewRow'. 

我試圖找到一個工作但我不能。任何幫助是極大的讚賞!

+0

你有沒有試過JavaScript解決方案還是需要回發?如果DDL總是平等的,爲什麼你們都需要呢? – MikeSmithDev

回答

6

試試這個

protected void ddlAddLabTest_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    DropDownList ddlLabTest = (DropDownList)sender; 
    DataGridItem row = (DataGridItem) ddlLabTest.NamingContainer; 
    DropDownList ddlAddLabTestShortName = (DropDownList)row.FindControl("ddlAddShortname"); 

    ddlAddLabTestShortName.SelectedIndex = intSelectedIndex; 
} 
+0

賓果!贏家。 – NJohns

+0

非常感謝! 我不得不使用_GridViewRow_而不是_DataGridItem_,但它的工作! :) – divinediu

1

看起來像NamingContainer不是一排,所以留下它。它已經有了FindControl方法。

var row = ddlLabTest.NamingContainer; 
+0

嘗試過:「不能隱式地將類型'System.Web.UI.Controls'轉換爲'System.Web.UI.WebControls.GridViewRow'。存在明確的轉換(您是否缺少轉換?)」 – NJohns

+1

刪除GridViewRow類型。使用var。 –