2013-11-04 92 views
0

我有兩個函數具有返回裝運區域的查詢。一個返回一個飛行員認證區域和A點和B點之間的其他返回區域。我想比較它們並選擇匹配區域的複選框。這是我的。Copare功能和在複選框列表中選擇相同項目的項目

private void getAreaText(string PilotID) 
    { 
     SqlConnection sqlCN; 
     SqlCommand sqlCOM; 
     SqlDataReader sqlDR; 
     DateTime dato; 

     string strCOM = ConfigurationManager.AppSettings["database"]; 

     sqlCN = new SqlConnection(strCOM); 
     try 
     { 
      sqlCN.Open(); 
      sqlCOM = new SqlCommand("select f_AreaText, f_DateOfIssue from v_GetAreaText where f_PilotID='" + PilotID + "'", sqlCN); 
      sqlDR = sqlCOM.ExecuteReader(); 
      CheckBoxList1.Items.Clear(); 
      while (sqlDR.Read()) 
      { 
       dato = sqlDR.GetDateTime(1); 
       dato = dato.AddYears(1); 

       if (DateTime.Now < dato) 
        CheckBoxList1.Items.Add(sqlDR.GetString(0)); 

       if (CheckBoxList1.Items.Contains(findAreas(Session["PilotID"].ToString))) 
       { 
        CheckBoxList1.Items[i].Selected = true; 
       } 

      } 
      sqlDR.Close();     

     } 
     catch (DataException ex) 
     { 
      Response.Write(ex.ToString()); 
     } 
     finally 
     { 
      sqlCN.Close(); 
      sqlDR = null; 
      sqlCOM = null; 
      sqlCN = null; 
     } 
     return; 
    } 

     protected void findAreas(string PilotID) 
    { 
     SqlConnection sqlCN; 
     SqlCommand sqlCOM; 
     SqlDataReader sqlDR; 

     string strCOM = ConfigurationManager.AppSettings["database"]; 

     sqlCN = new SqlConnection(strCOM); 
     try 
     { 
      sqlCN.Open(); 
      sqlCOM = new SqlCommand("select DISTINCT f_AreaText from v_FindAreas where f_PilotID='" + PilotID + "'and f_SailedFrom='" + getLMFromList(FromList) + "'and f_SailedTo='" + getLMFromList(ToList) + "'", sqlCN); 
      sqlDR = sqlCOM.ExecuteReader(); 
      CheckBoxList1.Items.Clear(); 
      while (sqlDR.Read()) 
      { 


        CheckBoxList1.Items.Add(sqlDR.GetString(0)); 
      } 
      sqlDR.Close(); 
     } 
     catch (DataException ex) 
     { 
      Response.Write(ex.ToString()); 
     } 
     finally 
     { 
      sqlCN.Close(); 
      sqlDR = null; 
      sqlCOM = null; 
      sqlCN = null; 
     } 
     return; 
    } 
+0

您有問題要問? – acfrancis

+0

我想弄清楚如何選擇從兩個函數返回的值相同的複選框。 –

+0

什麼不行? – acfrancis

回答

0

你的代碼很混亂,所以這裏試圖組織一下,讓它在同一時間工作。你可以做更多的事情來改善它,但由於我在黑暗中編碼,所以我沒有太多改變它。我改變的主要事情是使用SQL參數,而不是將值串聯到文字命令中。

private void getAreaText(string PilotID) 
{ 
    var strCOM = ConfigurationManager.AppSettings["database"]; 
    var sqlCN = new SqlConnection(strCOM); 
    try 
    { 
     sqlCN.Open(); 
     var sqlCOM = new SqlCommand("select f_AreaText, f_DateOfIssue from v_GetAreaText where [email protected]", sqlCN); 
     sqlCOM.Parameters.AddWithValue("@p1", PilotID); 
     var sqlDR = sqlCOM.ExecuteReader(); 
     CheckBoxList1.Items.Clear(); 
     while (sqlDR.Read()) 
     { 
      var dato = sqlDR.GetDateTime(1); 
      dato = dato.AddYears(1); 

      if (DateTime.Now < dato) 
      { 
       var AreaText = sqlDR.GetString(0); 
       CheckBoxList1.Items.Add(AreaText); 
       if (findAreas(PilotID, AreaText)) 
        // Do you want Selected here or Checked ? 
        CheckBoxList1.Items[CheckBoxList1.Count-1].Selected = true; 
      } 
     } 
    } 
    catch (DataException ex) 
    { 
     Response.Write(ex.ToString()); 
    } 
    finally 
    { 
     sqlDR.Close();     
     sqlCN.Close(); 
     sqlDR = null; 
     sqlCOM = null; 
     sqlCN = null; 
    } 
    return; 
} 

protected bool findAreas(string PilotID, string AreaText) 
{ 
    var strCOM = ConfigurationManager.AppSettings["database"]; 
    var sqlCN = new SqlConnection(strCOM); 
    try 
    { 
     sqlCN.Open(); 
     sqlCOM = new SqlCommand("select DISTINCT f_AreaText from v_FindAreas where [email protected] and [email protected] and [email protected] and [email protected]", sqlCN); 
     sqlCOM.Parameters.AddWithValue("@p1", PilotID); 
     sqlCOM.Parameters.AddWithValue("@p2", getLMFromList(FromList)); 
     sqlCOM.Parameters.AddWithValue("@p3", getLMFromList(ToList)); 
     sqlCOM.Parameters.AddWithValue("@p4", AreaText); 
     var sqlDR = sqlCOM.ExecuteReader(); 
     if (sqlDR.HasRows) 
      return true; 
    } 
    catch (DataException ex) 
    { 
     Response.Write(ex.ToString()); 
    } 
    finally 
    { 
     sqlDR.Close(); 
     sqlCN.Close(); 
     sqlDR = null; 
     sqlCOM = null; 
     sqlCN = null; 
    } 

    return false; 
} 
相關問題