2016-03-26 23 views
0

dropdownList1データを選択してプログラムを実行しようとすると、dropdownlist2は値を入力するのではなくSystem.Data.DataViewRowというテキストで設定されます。 私はこれを検索する6時間を試みましたが、回答が見つかりませんでした。System.Data.DataViewRow値の代わりに表示

enter image description here

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string s1 = DropDownList1.SelectedValue.ToString(); 
    string perfectid = string.Empty; 
    con.Open(); 
    SqlDataAdapter sda1 = new SqlDataAdapter("select [Id] from [Table] where movie_name='"+s1+"'",con); 
    DataTable dt = new DataTable(); 
    sda1.Fill(dt); 
    GridView g1 = new GridView(); 
    g1.DataSource = dt; 
    g1.DataBind(); 
    foreach (GridViewRow dr in g1.Rows) 
    { 
     perfectid = dr.Cells[0].Text; 

    } 

    SqlDataAdapter sda = new SqlDataAdapter("select song_name from songs where id='" + perfectid + "'", con); 
    DataTable dta = new DataTable(); 
    sda.Fill(dta); 

    DropDownList2.DataSource = dta; 
    DropDownList2.DataBind(); 

    con.Close(); 
} 
+0

...正しく – surajsn

+0

1を、それを編集してください - sqlparametersと使用を使用し、(つまり、[ボビーテーブル](http://bobby-tables.com)を参照してください、SQLインジェクションを防ぐ)、SQLクエリを連結していません。ストアドプロシージャ。 2 - なぜこれを2ステップのプロセスとしてやっているのですか?sqlでサブクエリ/ジョインを直接使用し、選択したムービー名に基づいてソングリストを取得することができ、gridview + forloop全体は不要です。 3 - デバッグして、SQLが正しく形成されているかどうかを確認しましたか?データが正しく取り込まれているかどうか – Spidey

答えて

0

コメントで述べたように:

1]は、パラメータ化クエリを使用して、SQLクエリのための文字列の連結を使用しないでください。 parametersを使用してsqlcommandを使用する場合は、次のコードを確認してください。

2]私はサブクエリを使用して両方のクエリを実行しましたので、データベースに一度だけ接続する必要があります。 【それはこのケースでは、参照としてIDを使用しているべきであるように、サブクエリから返された1行、他の使用INオペレータがある場合にのみ動作する]

3]マッピングDropDownList2.DataSource = dta;は、DataTextFieldをマッピングするのに十分な必要がされていませんとDataValueFieldも正確にどの列がマップされるかを知らせるために、私はインデックスによる列参照を使用しましたが、あなたはあまりにも名前を与えることができます。私によると、それは値の代わりにドロップダウンでSystem.Data.DataViewRowを表示している理由です。

protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    string s1 = DropDownList1.SelectedValue.ToString(); 
    string perfectid = string.Empty; 
    con.Open(); 

    SqlCommand cmd = new SqlCommand("select song_name from songs where id=(select [Id] from [Table] where [email protected]",con); 
    cmd.Parameters.AddWithValue("@moviewname", s1); 

    SqlDataAdapter sda = new SqlDataAdapter(cmd); 
    DataTable dta = new DataTable(); 
    sda.Fill(dta); 
    con.Close(); 

    DropDownList2.DataSource = dta; 
    DropDownList2.DataTextField = dta.Columns[0].ColumnName; 
    DropDownList2.DataValueField = dta.Columns[0].ColumnName; 
    DropDownList2.DataBind(); 
} 
+0

ありがとうございました!...上記のように、「パラメータ化クエリ」は私の疑問を解決しました。 –

+0

@moonshineようこそ。この回答が問題を解決した場合は、問題を受け入れて質問を閉鎖と呼ぶことができます。 – Spidey

関連する問題