2012-11-12 167 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。 –