EditItemTemplate に adrpDownList を含む GridView があります。元のデータはラベルにあり、編集モードでは ddl に転送されます。編集ボタンを押すと、例外が発生しました: System.ArgumentOutOfRangeException: 'ddlCities' には、アイテムのリストに存在しないため、無効な SelectedValue があります。ここで同様の質問を見つけ、次のようにコードを自分のニーズに合わせて調整しました (ここで、city は gridView の itemTemplate のラベルから受け取った文字列です)。
protected void gvClients_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (!string.IsNullOrEmpty(city))
{
ddlTemp = (DropDownList)e.Row.Cells[7].FindControl("ddlCities");
if (ddlTemp != null)
{
ListItem item = ddlTemp.Items.FindByValue(city);
if (item != null)
{
item.Selected = true;
}
}
}
}
それを機能させるために、 SelectedValue = <%# Bind("City") %> を消去する必要がありました。そうしないと、上記の例外が再び発生しました。しかし、ddl で選択された値に従ってデータを更新したいのですが、ddl が gridView データ ソースの何にもバインドされていないため、更新できません。助けていただければ幸いです。