none
GridViewの2つの項目を条件にDetailsView RRS feed

  • 質問

  • 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のデータソースのテーブルのキーは、複合キーであるので、一意の明細を表示できません。 何か方法があるのでしょうか??

    2006年5月26日 11:18

回答

  • @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;
    }
    2006年5月26日 14:45
    モデレータ

すべての返信

  • @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;
    }
    2006年5月26日 14:45
    モデレータ
  • trapemiyaさん、有難うございます。

    教えて頂いた方法で、バッチリ出来ました。

    この場合も、いわゆるノンコーディングでは、難しいのですね。

    削除時の確認メッセージなんかもそうでしたし。

     

    2006年5月26日 16:20
  • この場合も、いわゆるノンコーディングでは、難しいのですね。

    VS2003に比べればだいぶノンコーディングでできるようになりましたし、この傾向は今後も続くのではないでしょうか? ただ、情報として簡単にできることばかりが強調されているようで、ちょっとかわったことをやろうとするとどうやれば良いのかがわからなくて戸惑うことが多いようです。初心者はいつまでも初心者ではないので、簡単にできた後の、次のステップに進むための情報がもっとあっても良いと思います。私も最初は結構とまどいました。

    削除時の確認メッセージなんかもそうでしたし。

    これできましたでしょうか? 私も当時はGDNJ掲示板でろくな回答をしてませんでしたね。(^^;
    今なら削除ボタンをテンプレート列に変換して、javascriptでconfirmを出しちゃうのが手っ取り早いと回答すると思います。

    2006年5月27日 4:10
    モデレータ