0

私は2日間ユースケースに苦労しています。必要なのは、患者訪問テーブルから患者の訪問番号を読み取り、患者番号を指定してドロップダウンリストに入力することだけでした。いくつかの調査の後、これら2つのリンクはほぼ同じ問題に対処します。ここ ではスタックオーバーサイトのサンプルについて説明しましたが、それでも私のものは機能せず、エラーは表示されません。別のサンプルをここで説明します!これが私のコードです:HTML

  <li>
            <asp:Label runat="server" ID ="lblVisits">Visit Number</asp:Label>
            <asp:DropDownList ID="DropDownList2" runat="server" Height="16px" Width="174px" style="margin-left: 46px">
                <asp:ListItem Text=""></asp:ListItem>
                <asp:ListItem Value=""></asp:ListItem>
            </asp:DropDownList>
  </li>    

CodeBehind:

protected void btn_search_Click(object sender, EventArgs e)
    {
        string connect = System.Configuration.ConfigurationManager.ConnectionStrings["db_connection"].ToString();
        string num = txtPatientNumber.ToString();
        SqlConnection con = new SqlConnection(connect);
        string Statement = "SELECT Visit_Number FROM Visit "
          + "WHERE Patient_Number=@Patient_Number";
        SqlCommand cmd = new SqlCommand(Statement, con);
        cmd.Parameters.AddWithValue("@Patient_Number", num);

        SqlDataReader reader;

        try
        {
            con.Open();
            reader = cmd.ExecuteReader();
            while (reader.Read())
            {
                DropDownList2.DataSource = reader;
                DropDownList2.DataTextField = reader["Visit_Number"].ToString();
                DropDownList2.DataValueField = reader["Visit_Number"].ToString();
                DropDownList2.DataBind();
            }
            reader.Close();
        }
        catch (SqlException excep)
        {
            //Response.Write("<script language=javascript>alert('Patient Number not Found.');</script>");
            ErrorMessage.Text = "Error Occurred" + excep.Message.ToString();
        }
        finally
        {
            con.Close();
        }

    }
4

1 に答える 1

1

問題はここにあります:

while (reader.Read())
{
   DropDownList2.DataSource = reader;
   DropDownList2.DataTextField = reader["Visit_Number"].ToString();
   DropDownList2.DataValueField = reader["Visit_Number"].ToString();
   DropDownList2.DataBind();
}

あなたは使用.DataTextFieldして.DataValueFieldいて間違っています。これはどのように見えるべきかです:

DropDownList2.DataTextField = "Visit_Number";
DropDownList2.DataValueField ="Visit_Number";

また、dbから返されるすべての行に対してDropDownListを再バインドしないでください。したがって、を削除しwhile (reader.Read())ます。

最終コード:

DropDownList2.DataSource = reader;
DropDownList2.DataTextField = "Visit_Number";
DropDownList2.DataValueField = "Visit_Number";
DropDownList2.DataBind();
于 2013-02-05T13:27:25.483 に答える