2

データベースから2つのドロップダウンリストが入力されたグリッドビューがあります。1つはわかりやすい名前で、もう1つは省略名です。私は次のことを達成する必要があります:

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 に答える