2013-10-28 2 views
0

내가를 Page_Load항상 첫 번째 값에 리셋을 받고있다

시 채울 수있는 드롭 다운리스트가 이제
protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!IsPostBack) 
      { 
       DataTable table = new DataTable(); 


       string connectionString = GetConnectionString(); 
       string sqlQuery = "select distinct sname from contacts where sname is not null"; 


       using (OracleConnection conn = new OracleConnection(connectionString)) 
       { 

        try 
        { 
         conn.Open(); 

         using (OracleCommand cmd = new OracleCommand(sqlQuery, conn)) 
         { 

          using (OracleDataAdapter ODA = new OracleDataAdapter(cmd)) 
          { 

           ODA.Fill(table); 

          } 

         } 
        } 
        catch (Exception ex) 
        { 
         Response.Write("Not Connected" + ex.ToString()); 
        } 

       } 

       //DropDownList1.DataSource = table; 
       //DropDownList1.DataValueField = ""; 

       DropDownList2.DataSource = table; 
       DropDownList2.DataValueField = "sname"; 
       DropDownList2.DataTextField = "sname"; 



       DropDownList2.DataBind(); 
      } 
} 

나는 DropDownList로의 항목

protected void DropDownList2_SelectedIndexChanged(object sender, EventArgs e) 
     { 
      DataTable table = new DataTable(); 


      string connectionString = GetConnectionString(); 
      string val = DropDownList2.SelectedValue; 

      string sqlQuery = "SELECT distinct DUTY_DATE FROM DUTY_ROTA,DUTY_TYPES,CONTACTS WHERE DUTY_DATE between SYSDATE and SYSDATE+30 AND DUTY_ROTA.DUTY_TYPE = DUTY_TYPES.DUTY_TYPE AND SNAME IS NOT NULL and contacts.sname = '" + val + "' ORDER BY DUTY_DATE"; 
      using (OracleConnection conn = new OracleConnection(connectionString)) 
      { 

       try 
       { 
        conn.Open(); 

        using (OracleCommand cmd = new OracleCommand(sqlQuery, conn)) 
        { 

         using (OracleDataAdapter ODA = new OracleDataAdapter(cmd)) 
         { 

          ODA.Fill(table); 

         } 

        } 
       } 
       catch (Exception ex) 
       { 
        Response.Write("Not Connected" + ex.ToString()); 
       } 

      } 

      GridView1.DataSource = table; 
      GridView1.DataBind(); 

     } 
을 변경하는 경우의 GridView를 채우기 위해 노력하고 있어요

AutoPostBack을 사용하도록 설정했습니다. 이제 DropDownList 항목을 다른 항목으로 변경하면 Page가로드되지만 항상 첫 번째 값은 유지됩니다. 내가 디버그하려했는데, 그걸 발견 했어.

string val = DropDownList2.SelectedValue; 

항상 val 변수는 쿼리에서 반환되는 첫 번째 값입니다. 아무도 내가 이것을 어떻게 없앨 수 있는지 말해 줄 수 있니? 드롭 다운에서 항목을 선택할 때마다 GridView를 채 웁니다.

+0

DropDownList2.SelectedItem.Value로 변경하면 도움이 되나요? 즉 문자열 val = DropDownList2..SelectedItem.Value; – Ratna

+0

동일합니다. :(나는 아주 어딘가에 잘못 되었습니까? – Subhamoy

+0

DropDownList2.SelectedItem.Text ?? – Rafay

답변

0

안녕하세요 다른 항목을 선택하면 해당 드롭 다운 목록이 다시 충전되는 것 같습니다. 페이지로드에 중단 점을 넣고 드롭 다운 목록에 다른 이유가 없는지 다시 확인하십시오. 행운을 빕니다

+0

고마워요 - 디버그하려고 했어요 - DropDown은 항상 쿼리에 의해 반환 된 첫 번째 결과를 채우고 있습니다. 고르다.. – Subhamoy

0

당신의 하락 downlist은 다음과 같이한다 :

<asp:DropDownList ID="DropDownList2" runat="server" AutoPostBack="True" 
OnSelectedIndexChanged="DropDownList2_SelectedIndexChanged"> 
     </asp:DropDownList> 

확실히 AutoPostBack은이 TRUE로 설정되어 있는지 확인합니다.

인덱스가 -1보다 큰 경우 항목을 선택하면됩니다.

 if(DropDownList2.SelectedIndex != -1) 
    { 
     string val = DropDownList2.SelectedItem.Value; 
// enter code here 
    } 
관련 문제