1

列テーブルの値の1つを取得して、それをラベルに格納しています。ラベルに保存した後、ラベルを別のページにセッションします。ただし、取得する値は、ユーザーがクリックしたものに応じたものでなければなりません。たとえば、ユーザーは私のWebページの2番目の製品をクリックします。したがって、2番目の製品の名前は、次のページにセッションオーバーする必要があります。

ここでの私の問題は、値を取得できたのに、ユーザーが何をクリックしたかによるものではないことです。私のラベルの出力は、私が望んでいないすべての製品名であることがわかりました。どこが間違っているのですか?

これが私の.csコードです:

string strConnectionString = ConfigurationManager.ConnectionStrings["PRODUCTSConnectionString"].ConnectionString;


    SqlConnection myConnect = new SqlConnection(strConnectionString);

    string strCommandText = "SELECT productName from Products";
    SqlCommand cmd = new SqlCommand(strCommandText, myConnect);

    myConnect.Open();
    SqlDataReader reader = cmd.ExecuteReader();

    Label1.Text = "";

    while (reader.Read())
    {
        Label1.Text += reader["productName"].ToString() + "<br/>";
    }

    reader.Close();
    myConnect.Close();
4

2 に答える 2

1

ユーザーが選択した製品の一意の識別子(たとえば、主キー)をキャプチャしてから、その製品IDでフィルタリングするWHERE句をSELECTステートメントに追加します。現在、SELECTステートメントは、テーブル内のすべての製品の製品名を取得しています。

于 2012-07-29T13:53:53.613 に答える
0

データベースから1つの製品を期待している場合は、に変更できwhileますif

string strCommandText = "SELECT productName from Products WHERE productID=@ProductID";
SqlCommand cmd = new SqlCommand(strCommandText, myConnect);
cmd.Parameters.AddWithValues("@ProductID", productID);
...

if(reader.Read())
{
  //Label1.Text += reader["productName"].ToString();
  Label1.Text = reader["productName"].ToString();
}

しかし、ProductIDは一意であるべきだと思います

于 2012-07-29T14:12:28.950 に答える