2013-07-01 6 views
0

사용자가 주문 ID를 선택하면 나머지 주문 정보가 레이블에 표시됩니다. 직원 ID, 주문일,화물, 발송 된 이름 및 국가를 표시하십시오. 이 기능은 프로그래밍 방식으로 직접 데이터 액세스를 사용하여 구현해야합니다.드롭 다운 목록 값을 텍스트 상자에 바인딩

편집 : 코드 예제 및 추가 설명.

String CS = onfigurationManager.ConnectionStrings["NORTHWNDConnectionString"].ConnectionStr‌​ing; 
using (SqlConnection con = new SqlConnection(CS)) 
{ 
    SqlCommand cmd = new SqlCommand("SELECT OrderID FROM Orders", con); 
    con.Open(); 
    DropDownList1.DataSource = cmd.ExecuteReader(); 
    DropDownList1.DataTextField = "OrderID"; 
    DropDownList1.DataValueField = "OrderID"; 
    DropDownList1.DataBind(); 
    Label1.Text = Convert.ToString(DropDownList1.SelectedItem.Text); 
} 

내가 원하는 것은 드롭 다운 목록에서 값을 선택할 때 표시 될 주문 테이블에있는 다른 필드입니다.

+3

당신은 아직 아무것도 시도 해 봤나 :이 핸들러는 이런 일을해야합니까? 과제에서 복사하여 붙여 넣은 질문처럼 읽습니까? – tymeJV

+1

이 라벨 – mckeejm

+0

보다 요구 같은 소리 내가 내가 주문 테이블에가 다른 필드 값이이 – user2540165

답변

0

당신은 SQL 쿼리 결과에서 DataTable을 확인한 다음 ID 열에서 드롭 다운리스트에 항목을 추가 할 수 있습니다. 그런 다음 DDL에서 항목을 선택하면 데이터 테이블의 행이 선택한 주문 ID와 일치하는 정보가 표시됩니다. 당신이 내가 의미있는 무슨 지워지지 않습니다하려는 경우

나는 코드를 작성할 수 있습니다.

업데이트 : 당신이 ASP.Net에 귀하의 질문에 표시된대로 코드

var ds = new DataSet(); 

using (var conn = new SqlConnection(connection)) 
{ 
    conn.Open(); 
    var command = new SqlCommand("Your SQL Query", conn); 
    var adapter = new SqlDataAdapter(command); 
    adapter.Fill(ds); 
    conn.Close(); 
} //Now you have a dataset, with one table that matches your query result. 

//And now we can use a foreach loop to add every OrderID to dropdownlis 

foreach (DataTable table in ds.Tables) 
{ 
    foreach (DataRow dr in table.Rows) 
    { 
     DDLname.Items.Add(dr[0].ToString()); 
    } 
} 

//onSelectedValue event 
string orderID = DDLname.Text.toString(); 
Label1.Text = orderID; 
foreach (DataTable table in ds.Tables) 
{ 
    foreach (DataRow dr in table.Rows) 
    { 
     if(dr[0].toString().equals(orderID)) 
     { 
      Label2.text = dr[1].toString(); 
      Label3.text = dr[2].toString(); 
      etc.... 
     } 
    } 
} 
+0

당신은 코드를 쓸 수 드롭 다운리스트에서 선택 될 때 표시 할 원하는되고 싶은'toString 객체 '형식의 첫 번째 인수를 허용하는 것은'볼 수 있습니다 (당신은 using 지시문 또는 어셈블리 참조가?) \t를 ...이 오류 – user2540165

+0

'객체'toString '에 대한 정의없이 확장 메서드를 포함하지 않습니다에 대한 – user2540165

+0

를 제거하는 방법을 거의 toString() 메서드를 사용할 수있는 모든 것. 메시지를받는 대상을 볼 수 있습니까? 나는 비주얼 스튜디오가 당신에게 코디네이터 리플렉션을 제공한다고 생각합니다. –

0

, 나는 이것이 ASP.Net 웹 양식 응용 프로그램의 일부인 것으로 가정합니다. 즉, 드롭 다운 목록은 브라우저의 웹 페이지 안에 있습니다. 사용자가 항목을 선택하면 바로 레이블을 표시할지 또는 서버에 게시 한 후에 레이블을 표시할지 여부는 분명하지 않습니다. 첫 번째 경우에는 선택한 항목에 대해 표시 할 데이터를 얻으려면 javascript와 Ajax 또는 JSON과 같은 것이 필요할 것입니다. 두 번째 경우에는 드롭 다운 목록의 SelectedIndex_Changed 이벤트에 대한 이벤트 처리기를 추가 할 수 있습니다.

string CS = ConfigurationManager.ConnectionStrings["NORTHWNDConnectionString"].ConnectionString; 
    using (SqlConnection con = new SqlConnection(CS)) 
    { 
     SqlCommand cmd = new SqlCommand("SELECT OrderID FROM Orders WHERE OrderId = @OrderId", con); 
     cmd.Parameters.AddWithValue("@OrderId", DropDownList1.SelectedItem.Value); 
     con.Open(); 
     if (reader.Read()) 
     { 
      SqlDataReader reader = cmd.ExecuteReader(); 
      Label1.Text = String.Format("Employee ID: {0}, order date: {1}, freight: {2}, shipped name: {3}, and country {4}." 
       , reader["employeeid"].ToString() 
       , reader["orderdate"].ToString() 
       , reader["freight"].ToString() 
       , reader["shipname"].ToString() 
       , reader["shipcountry"].ToString()); 
     } 
    } 
+0

Label1.Text = String.Format ("직원 ID : {0}, 주문 날짜 : {1},화물 : {2}, 발송 된 이름 : {3}, 국가 {4}"), reader [ "employeeId ToString(), reader [ "country"] .ToString(), reader [ "orderDate"].); – user2540165

+1

이 코드를 SelectedIndex_Changed 이벤트에 붙여 넣었지만 리더가 시작되기 전에이 줄에 어떤 종류의 오류가 있습니다. 이 코드에는 일부 입력 오류가있었습니다. – user2540165

+0

@ user2540165 내가 VS.Net에 붙여 넣은 지금은 잘 컴파일해야합니다. –

관련 문제