【问题标题】:c# dropdownlist selectedindexchanged in gridview sets selectedindex of second dropdownlistc# dropdownlist selectedindexchanged in gridview设置第二个下拉列表的selectedindex
【发布时间】:2012-11-12 20:36:47
【问题描述】:

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

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

我已经尝试找到一个可行的示例,但我找不到。非常感谢任何帮助!

【问题讨论】:

  • 您尝试过javascript解决方案还是需要回发?如果 DDL 总是彼此相等,为什么你需要两者?

标签: c# gridview drop-down-menu selectedindexchanged


【解决方案1】:

试试这个

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;
}

【讨论】:

  • 非常感谢!我不得不使用 GridViewRow 而不是 DataGridItem 但它奏效了! :)
【解决方案2】:

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

var row = ddlLabTest.NamingContainer;

【讨论】:

  • 试过了:“无法将类型'System.Web.UI.Controls'隐式转换为'System.Web.UI.WebControls.GridViewRow'。存在显式转换(您是否缺少演员表?) "
  • 移除 GridViewRow 类型。使用变量。
猜你喜欢
  • 2018-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-16
相关资源
最近更新 更多