データベースの更新に使用しているグリッドビューがあります。グリッドビューは 3 つの列で構成されています。最初の列は ID 番号です。2 番目の列はカテゴリ (BU) です。最後の列はコメント フィールドです。2 番目と 3 番目の列を編集できるように編集を設定しました。2 番目の列には、ユーザーが選択できるドロップダウン リストが必要です。ここまでは絶好調です。私のクライアントはこれに別のグループを追加したので、顧客が顧客 A か顧客 B かを調べるために、ドロップダウン リストに入力するクエリを変更する必要があります。データベースのビューに基づいてドロップダウン リストを作成しています。このビューには、Cust、BU という 2 つの列があります。グリッドビューに入力する元のクエリからカスタムを取得できます。DataKey として設定しようとしましたが、参照方法がわかりません。
これは、グリッドビューのドロップダウン リストのコードです。onrowdatabound = "Rowdatabound" を使用して、オブジェクトをグリッドビューに関連付けます。
以下は、rowdatabound のコード ビハインドです。
protected void RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow && gvSummary.EditIndex == e.Row.RowIndex)
{
DropDownList dlBU = (DropDownList)e.Row.FindControl("dlBU");
string query = "select distinct Unit from vw_BU";
SqlCommand cmd = new SqlCommand(query);
dlBU.DataSource = GetData(cmd);
dlBU.DataTextField = "Unit";
dlBU.DataValueField = "Unit";
dlBU.DataBind();
dlBU.Items.FindByValue((e.Row.FindControl("lblBU") as Label).Text).Selected = true;
}
}
lblBU は、ドロップダウンリストが元の値を保持するようにするためのものです。顧客ごとに null 値をデータベースに追加して、値が入力されていない場合にエラーを回避できるようにしました。
したがって、最終的に私がやりたいことは、vw_BU とは異なるユニットを選択することです。ここで、cust = "Tim" であり、元の select ステートメントの datakey から Tim を取得します。
これが理にかなっていることを願っています。