2013-04-25 76 views
0

我有一个CheckBox的表格,它被插入到SQL数据库中'1'和'0'。但是,我想通过加载事件再次检索这些值,但我无法获取它们。这是我的代码:从SQL数据库中读取ASP.Net中的CheckBox值?

private void getAuditChecklist() 
{ 
    SqlCommand cmd = null; 
    string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 
    string queryString = @"SELECT Mount, Braker, Access, Conn_Net, Log_Book, Pictures, Floor, Cb_Lenght, Channel FROM AUDITOR_CHECKLIST " + 
     "WHERE SITE_ID = @SiteID";   

    using (SqlConnection connection = 
       new SqlConnection(conn)) 
    { 
     SqlCommand command = 
      new SqlCommand(queryString, connection); 
     connection.Open(); 
     cmd = new SqlCommand(queryString); 
     cmd.Connection = connection; 

     cmd.Parameters.Add(new SqlParameter("@SiteID", //the name of the parameter to map 
       System.Data.SqlDbType.NVarChar, //SqlDbType value 
       20, //The width of the parameter 
       "SITE_ID")); //The name of the column source 
     //Fill the parameter with the value retrieved 
     //from the text field 
     cmd.Parameters["@SiteID"].Value = foo.Site_ID; 

     SqlDataReader reader = cmd.ExecuteReader(); 
while (reader.Read()) 
    {      
    CheckBox1.Checked = (reader.GetBoolean(reader.GetOrdinal("Mount"))); 
    CheckBox2.Checked = (reader.GetBoolean(reader.GetOrdinal("Braker"))); 
    CheckBox3.Checked = (reader.GetBoolean(reader.GetOrdinal("Access"))); 
    CheckBox4.Checked = (reader.GetBoolean(reader.GetOrdinal("Conn_Net"))); 
    CheckBox5.Checked = (reader.GetBoolean(reader.GetOrdinal("Log_Book"))); 
    CheckBox6.Checked = (reader.GetBoolean(reader.GetOrdinal("Pictures"))); 
    CheckBox8.Checked = (reader.GetBoolean(reader.GetOrdinal("Floor"))); 
    CheckBox9.Checked = (reader.GetBoolean(reader.GetOrdinal("Cb_lenght"))); 
    CheckBox10.Checked = (reader.GetBoolean(reader.GetOrdinal("Channel"))); 
    } 
    reader.Close(); 
    }   
} 

我错过了从sql db中得到复选标记?下面是如何插入到SQL中:

private void SaveAuditChecklist() 
{ 
    if (auditChecklist != null) 
    { 
     SqlCommand cmd = null; 
     string conn = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString; 

     string queryString = @"INSERT INTO AUDITOR_CHECKLIST VALUES(" + 
      "@SiteID, @Mount, @Braker, @Access, @ConnNet, @LogBook, @Pictures, @Floor, @CbLenght, @Channel) "; 

     using (SqlConnection connection = 
        new SqlConnection(conn)) 
     { 
      SqlCommand command = 
       new SqlCommand(queryString, connection); 
      connection.Open(); 
      cmd = new SqlCommand(queryString); 
      cmd.Connection = connection; 
      cmd.Parameters.Add(new SqlParameter(
       "@SiteID",      //the name of the parameter to map 
       System.Data.SqlDbType.NVarChar, //SqlDbType value 
       20,        //The width of the parameter 
       "Site_ID"));      //The name of the column source 

      //Fill the parameter with the value retrieved 
      //from the text field 
      cmd.Parameters["@SiteID"].Value = foo.Site_ID; 
      cmd.Parameters.Add(new SqlParameter("@Mount", SqlDbType.Bit)); 
      cmd.Parameters["@Mount"].Value = CheckBox1.Checked; 
      cmd.Parameters.Add(new SqlParameter("@Braker", SqlDbType.Bit)); 
      cmd.Parameters["@Braker"].Value = CheckBox2.Checked; 
      cmd.Parameters.Add(new SqlParameter("@Access", SqlDbType.Bit)); 
      cmd.Parameters["@Access"].Value = CheckBox3.Checked; 
      cmd.Parameters.Add(new SqlParameter("@ConnNet", SqlDbType.Bit)); 
      cmd.Parameters["@ConnNet"].Value = CheckBox4.Checked; 
      cmd.Parameters.Add(new SqlParameter("@LogBook", SqlDbType.Bit)); 
      cmd.Parameters["@LogBook"].Value = CheckBox5.Checked; 
      cmd.Parameters.Add(new SqlParameter("@Pictures", SqlDbType.Bit)); 
      cmd.Parameters["@Pictures"].Value = CheckBox6.Checked; 
      cmd.Parameters.Add(new SqlParameter("@Floor", SqlDbType.Bit)); 
      cmd.Parameters["@Floor"].Value = CheckBox8.Checked; 
      cmd.Parameters.Add(new SqlParameter("@CbLenght", SqlDbType.Bit)); 
      cmd.Parameters["@CbLenght"].Value = CheckBox9.Checked; 
      cmd.Parameters.Add(new SqlParameter("@Channel", SqlDbType.Bit)); 
      cmd.Parameters["@Channel"].Value = CheckBox10.Checked; 
      cmd.ExecuteReader(); 
     } 
    } 
} 
+0

你不为其他复选框读回值。你如何设定其他复选框? – Steve 2013-04-25 17:09:52

+0

好吧,为了在这个例子中保存文本,我只做了第一个CheckBox。我认为,下一个复选框的代码(读者)将会是相同的。 – Jacman 2013-04-25 17:17:56

回答

0

Finally got the reader they way it should work to get the checkmark values. I edited my question with the working code; however, below is what I added or changed for the reader:

while (reader.Read()) 
{      
CheckBox1.Checked = (reader.GetBoolean(reader.GetOrdinal("Mount"))); 
CheckBox2.Checked = (reader.GetBoolean(reader.GetOrdinal("Braker"))); 
CheckBox3.Checked = (reader.GetBoolean(reader.GetOrdinal("Access"))); 
CheckBox4.Checked = (reader.GetBoolean(reader.GetOrdinal("Conn_Net"))); 
CheckBox5.Checked = (reader.GetBoolean(reader.GetOrdinal("Log_Book"))); 
CheckBox6.Checked = (reader.GetBoolean(reader.GetOrdinal("Pictures"))); 
CheckBox8.Checked = (reader.GetBoolean(reader.GetOrdinal("Floor"))); 
CheckBox9.Checked = (reader.GetBoolean(reader.GetOrdinal("Cb_lenght"))); 
CheckBox10.Checked = (reader.GetBoolean(reader.GetOrdinal("Channel"))); 
} 
1

布尔值在Sql数据库中存储为1或0,但数据读取器会为您执行转换。而是使用:

var myBool = reader.GetBoolean(i); 

然后只需将值赋给控件的value属性即可。

+0

谢谢,我改为GetBoolean(i)...但我没有得到哪个控制值属性或在哪里分配它。请你详细说明一下。 – Jacman 2013-04-25 16:57:38

+0

var myBool = reader.GetBoolean(i); mycheckBox.IsChecked = myBool; – Oscar 2013-04-25 17:44:22

+0

我这样做了,现在我得到以下错误:“对象引用未设置为对象的实例。”请帮忙! – Jacman 2013-04-25 18:11:26