2017-11-01 6 views
0

내 dropdownlist select의 값을 내 gridview에 전달하는 데 SQL 문에 문제가 있습니다. 특정 날짜와 함께 SQL 문 Serve Management Studio를 테스트했는데 작동하지만 드롭 다운 목록에서 선택 값으로 작동하지 않습니다. Gridview에 값을 어떻게 전달합니까? 도와 주셔서 감사합니다, 나는 asp.net 세계에 새로운 학생입니다. 웹 응용 프로그램의Asp.net/SQL Dropdownlist에서 값을 선택하고 값을 Gridview로 전달하는 방법은 무엇입니까?

이미지 : 내 DATABASE의 enter image description here 이미지 : enter image description here

public void RefreshDay() 
     { 
      SqlConnection conn = new SqlConnection(@"data source =.\sqlexpress; integrated security = true; database = DBdentist"); 
      SqlDataAdapter da = null; 
      DataSet ds = null; 
      DataTable dt = null; 
      string sqlsel = "SELECT Distinct patient.patientID, day from patient, patientreservation where patient.patientID = patientreservation.patientID"; 


     try 
     { 

      da = new SqlDataAdapter(); 
      da.SelectCommand = new SqlCommand(sqlsel, conn); 
      ds = new DataSet(); 
      da.Fill(ds, "myDay"); 
      dt = ds.Tables["myDay"]; 


      DropDownListDay.DataSource = dt; 
      DropDownListDay.DataTextField = "day"; 
      DropDownListDay.DataValueField = "patientID"; 
      DropDownListDay.DataBind(); 
      DropDownListDay.Items.Insert(0, "Select Day"); 
     } 
     catch (Exception ex) 
     { 
      LabelDay.Text = ex.Message; 
     } 
     finally 
     { 
      conn.Close(); 
     } 

    } 



    protected void DropDownListDay_SelectedIndexChanged(object sender, EventArgs e) 
    { 
     if (DropDownListDay.SelectedIndex != 0) 
     { 
      SqlConnection conn = new SqlConnection(@"data source =.\sqlexpress; integrated security = true; database = DbDentist"); 
      SqlDataAdapter da = null; 
      DataSet ds = null; 
      DataTable dt = null; 
      string sqlsel = "SELECT patientreservation.patientID, patient.firstname, patient.lastname, patientreservation.day, patientreservation.hour, treatment.treatment FROM((patientreservation INNER JOIN patient ON patientreservation.patientID = patient.patientID) INNER JOIN treatment ON patientreservation.treatmentID = treatment.treatmentID) WHERE patientreservation.day = " + DropDownListDay.SelectedValue + ""; 

      try 
      { 

       da = new SqlDataAdapter(); 
       da.SelectCommand = new SqlCommand(sqlsel, conn); 
       ds = new DataSet(); 
       da.Fill(ds, "myDay"); 
       dt = ds.Tables["myDay"]; 
       GridViewDay.DataSource = dt; 
       GridViewDay.DataBind(); 

      } 
      catch (Exception ex) 
      { 
       LabelDay.Text = ex.Message; 
      } 
      finally 
      { 
       conn.Close(); 
      } 

     } 

     else 
     { 
      LabelDay.Text = "You choose None:"; 
     } 
    } 
} 

} 
+0

DropDownListDay.SelectedValue가 숫자 값입니까? 또는 "월요일"과 비슷한 것입니까 – abney317

+0

데이터 유형이 Date ... '2017-07-05' – Jess

+0

SELECT patientreservation.patientID, patient.firstname, patient.lastname, patientreservation.day, patientreservation.hour, 치료 치료. FROM (환자 예약 내원 환자 ON 환자 예약 환자 ID = patient.patientID) INNER JOIN 치료 ON 환자 보존 치료 ID = 치료. 치료 ID) WHERE patientreservation.day = '2017-07-05'테스트 할 때 잘 작동합니다. 하지만, 내가 선택한 값을 추가 할 때 문제가 발생하기 시작합니다. – Jess

답변

0

당신은 단순히 이것을 사용할 수 있습니다 :

WHERE patientreservation.day = '" + DropDownListDay.Text.ToString() + "'"; 
0

당신의 드롭 다운의 구성은

DropDownListDay.DataTextField = "day"; 
DropDownListDay.DataValueField = "patientID"; 

이지만이 값 것처럼 필요 현재 선택한 값으로 필터링하고 싶습니다.

,
DropDownListDay.DataTextField = "day"; 
DropDownListDay.DataValueField = "day"; 
patientreservation.patientID patient.patientID = ON ((patientreservation INNER JOIN 환자로부터

SELECT patientreservation.patientID, patient.firstname, patient.lastname, patientreservation.day, patientreservation.hour, treatment.treatment)가 patientreservation ON INNER 처리 JOIN .treatmentID = treatment.treatmentID) WHERE patientreservation.day = "+ DropDownListDay. SelectedValue + "";

또는 당신은 "WHERE patientreservation.day ="+ DropDownListDay SelectedText +. "로 시도 할 수 있습니다.

+0

여전히 이러한 변경 사항과 함께 그리드보기를 볼 수 없습니다. 선택한 텍스트에 매우 만족하지 않습니다. DropDownListDay.DataTextField = "day"; DropDownListDay.DataValueField = "day"; 많은 의미가 있지만 여전히 표시되지 않는 이유는 확실하지 않습니다. – Jess

+0

datetime을 사용하여 데이터 유형 문제를 해결하기 위해 수행 할 수있는 작업은 $ "WHERE DATEDIFF (dd, patientreservation.day, {DropDownListDay.SelectedValue}) = 0" ; 작동하지 않는 경우 간단한 따옴표를 사용해보세요. – Igal23

0

가 드롭 다운리스트가 이벤트를 트리거하지 않습니다이의 AutoPostBack ="true "로 넣어 시도하여 . ASP를 드롭 다운리스트 태그

0

감사를 도움을 내가

모든 노력을.

DropDownListDay.DataTextField = "day"; DropDownListDay.DataValueField = "day"

돕는. 나는 또한 내 gridview에 문제가있다. 나는 그것을 삭제하고 새로운 것을 만들었다. 어떻게 든 도움이된다.