トップ回答者
GridViewの2つの項目を条件にDetailsView

質問
-
GridViewの最初の1列の項目を条件に、明細のDetailsViewを表示する事は出来るのですが、GridViewの2つの項目を条件に、GridViewの選択ボタンを押し、DetailsViewを表示する事が出来ません。
DetailsViewの”データソースの構成”で、
SELECT * FROM [MyTable] WHERE ([Myfld010] = @Myfld010) and ([Myfld020] = @Myfld020) とやってます。
@Myfld010、@Myfld020 は、GridViewを指定していますが、GridViewのどの列を@Myfld010や、@Myfld020 に結び付けるかの指定がそもそも無いから出来ないように思います。@Myfld010、@Myfld020ともに、GridViewの最初の列の値が入ってくるようです。
GridViewのデータソースのテーブルのキーは、複合キーであるので、一意の明細を表示できません。 何か方法があるのでしょうか??
回答
-
@Myfld010、@Myfld020をGridViewに結びつけるのではなく、何にも結び付けない状態(none)にしておきましょう。
そして、以下のようにしてみましょう。DataKeysを定義するのを忘れないようにして下さい。protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { string param1 = GridView1.DataKeys[GridView1.SelectedRow.RowIndex]["Myfld010"].ToString(); string param2 = GridView1.DataKeys[GridView1.SelectedRow.RowIndex]["Myfld020"].ToString(); SqlDataSource2.SelectParameters["Myfld010"].DefaultValue = param1; SqlDataSource2.SelectParameters["Myfld020"].DefaultValue = param2; }
すべての返信
-
@Myfld010、@Myfld020をGridViewに結びつけるのではなく、何にも結び付けない状態(none)にしておきましょう。
そして、以下のようにしてみましょう。DataKeysを定義するのを忘れないようにして下さい。protected void GridView1_SelectedIndexChanged(object sender, EventArgs e) { string param1 = GridView1.DataKeys[GridView1.SelectedRow.RowIndex]["Myfld010"].ToString(); string param2 = GridView1.DataKeys[GridView1.SelectedRow.RowIndex]["Myfld020"].ToString(); SqlDataSource2.SelectParameters["Myfld010"].DefaultValue = param1; SqlDataSource2.SelectParameters["Myfld020"].DefaultValue = param2; }
-
>この場合も、いわゆるノンコーディングでは、難しいのですね。
VS2003に比べればだいぶノンコーディングでできるようになりましたし、この傾向は今後も続くのではないでしょうか? ただ、情報として簡単にできることばかりが強調されているようで、ちょっとかわったことをやろうとするとどうやれば良いのかがわからなくて戸惑うことが多いようです。初心者はいつまでも初心者ではないので、簡単にできた後の、次のステップに進むための情報がもっとあっても良いと思います。私も最初は結構とまどいました。
>削除時の確認メッセージなんかもそうでしたし。
これできましたでしょうか? 私も当時はGDNJ掲示板でろくな回答をしてませんでしたね。(^^;
今なら削除ボタンをテンプレート列に変換して、javascriptでconfirmを出しちゃうのが手っ取り早いと回答すると思います。