2

我有一个网格视图,其中包含从数据库填充的两个下拉列表。一个是描述性名称,另一个是缩写名称。我需要完成以下任务:

当我在 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'.

我试图找到一个可行的例子,但我不能。任何帮助是极大的赞赏!

4

2 回答 2

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;
}
于 2012-11-12T21:08:12.597 回答
1

似乎NamingContainer不是一行,所以就这样吧。它已经有了FindControl方法。

var row = ddlLabTest.NamingContainer;
于 2012-11-12T20:43:50.600 回答