2012-11-02 44 views
1

我想檢查一下這些字段是否有一些唯一值 - 例如,我想檢查我的表中的field1,field2的值是否爲「YES」。如果他們都有「是」,那麼我想調用某個函數,但是如果其中一個具有「無」值,那麼我想調用其他函數。請注意,在我的select語句中,我傳遞了查詢字符串中的ID。我怎樣才能做到這一點?檢查記錄列是否有一些特殊值

protected void Check_ItemUpdated(object sender, DetailsViewUpdatedEventArgs e) { 
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString); 
    SqlDataAdapter da = new SqlDataAdapter("SELECT ID, Field1, Field2 from MyTabel WHERE ID = '" + Request.QueryString["ID"] + "'", con); 
    DataTable dt = new DataTable(); 
    da.Fill(dt); 
} 

回答

4

如果搞清楚是否特定一套標準存在於一個給定的記錄與否是所有你需要的話,我可以建議你做在數據庫端這張支票,然後使用ExecuteScalar得到結果:

using(SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["MyConnectionString"].ConnectionString)) 
{ 
    using(SqlCommand cmd = new SqlCommand("SELECT count(*) from MyTabel WHERE ID [email protected] And (Field1='Yes' And Field2='Yes')" , con)) 
    { 
     cmd.parameters.Add("@ID",Request.QueryString["ID"]); 

     con.open(); 

     int result = cmd.ExecuteScalar(); 

     con.close(); 

     if(result == 1) 
      // condition exists 
      // so call success function 
     else 
      // call failure function 
    } 
} 

更新:

,這可能不是直接相關的任務離子但是從detailsView獲得記錄的ID,你需要經過兩個步驟:

  1. 設置datakeynames屬性爲detailsView你的表的主鍵名字的名字 - 在這種情況下,ID

    <asp:detailsview datakeynames="ID" 
    
  2. 現在,您可以通過這裏瞭解更多information

    int id = (int)detailsView.SelectedValue; 
    

檢查訪問選擇的ID。

+0

感謝您的快速響應,但我得到一個如下所示的錯誤:「不能隱式地將類型對象轉換爲int」在這一行:cmd.ExecuteScalar(), – moe

+0

抱歉,我忘了將它轉換爲int。現在檢查答案 –

+0

再次感謝,該錯誤是固定的,但現在得到另一個錯誤,如下所示:「ExecuteScalar需要一個開放和可用的連接。連接的當前狀態是關閉」 – moe

相關問題