2014-03-25 160 views
0

我有3個複選框,id是chkIPP,chkOutReach和chkCCA。當用戶選中其中一個複選框時,該值將被插入到BlogType列字段中。我想插入的3個值是IPP故事,OutReach活動和CCA。我只想讓一個複選框只被選中。只有一個值將被插入到blogType列字段中。如何將複選框的值插入數據庫?

我認爲近似控件應該是單選按鈕或下拉列表,因爲只有一個可以選擇並插入到數據庫中,但我的老師告訴我使用複選框。因此,用戶將輸入3文本框,並選中其中一個複選框,並將值插入到數據庫中。我已經編碼了3個文本框。留下複選框。由於

enter image description here

enter image description here

以下@serhads建議。我做對了嗎? enter image description here

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    string AdminNumber = Convert.ToString(txtAdmin.Text); 
    string Name = Convert.ToString(txtName.Text); 
    string BlogStory = Convert.ToString(txtStory.Text); 

    insertGameRecord(AdminNumber, Name, BlogStory); 
} 

private void insertGameRecord(string admin, string name, string story) 
{ 
    try 
    { 
     string strConnectionString = ConfigurationManager.ConnectionStrings["BlogConnectionString"].ConnectionString; 
     SqlConnection myConnect = new SqlConnection(strConnectionString); 

     string strCommandText = "INSERT EntryTable(AdminNumber, Name, BlogStory, DateEntry) Values(@AdminNumber, @Name, @BlogStory, @DateEntry)"; 

     SqlCommand cmd = new SqlCommand(strCommandText, myConnect); 

     cmd.Parameters.AddWithValue("@AdminNumber", admin); 
     cmd.Parameters.AddWithValue("@Name", name); 
     cmd.Parameters.AddWithValue("@BlogStory", story); 
     cmd.Parameters.Add("DateEntry", SqlDbType.DateTime); 
     cmd.Parameters["DateEntry"].Value = DateTime.Now; 

     myConnect.Open(); 

     int result = cmd.ExecuteNonQuery(); 

     if (result > 0) 
     { lblError.Text = "Record Updated"; 
     bindResultGridView(); 
     } 

     else { lblError.Text = "Update fail"; } 

     myConnect.Close(); 
    } 
    catch(Exception) 
    { 
     lblError.Text = "Please enter correct data"; 
    } 


} 
+0

檢查我的答案。希望它能幫助你。不要忘記註冊並將其標記爲答案。 – SpiderCode

回答

1

有兩種方法可以做到這一點:

1.使用jQuery:

在每個複選框的單擊事件,禁止使用JQuery的所有三個複選框如前所述在下面的代碼示例中:

HTML:

<asp:CheckBox runat="server" ID="chkIPP" CssClass="check" /> 
<asp:CheckBox runat="server" ID="chkOutReach" CssClass="check" /> 
<asp:CheckBox runat="server" ID="chkCCA" CssClass="check" /> 
<asp:Button runat="server" ID="buttonSubmit" Text="Submit" OnClick="buttonTest_OnClick" /> 

的JavaScript:

$('.check').click(function() { 
    $('.check').each(function() { 
     $(this).prop('disabled', 'disabled'); 
    }); 
}); 

2。使用CheckeboxList與OnSelectedIndexChanged事件

HTML:

<asp:CheckBoxList runat="server" ID="cblType" OnSelectedIndexChanged="cblType_OnSelectedIndexChanged" AutoPostBack="True"> 
    <Items> 
     <asp:ListItem Text="IPP Stories" Value="IPP Stories"></asp:ListItem> 
     <asp:ListItem Text="OutReach Activities " Value="OutReach Activities"></asp:ListItem> 
     <asp:ListItem Text="CCA" Value="CCA"></asp:ListItem> 
    </Items> 
</asp:CheckBoxList> 

<asp:Button runat="server" ID="buttonSubmit" Text="Submit" OnClick="buttonTest_OnClick" /> 

代碼背後:

protected void cblType_OnSelectedIndexChanged(object sender, EventArgs e) 
{ 
    this.cblType.Enabled = false; 
} 

按鈕提交Click事件:

protected void btnSubmit_Click(object sender, EventArgs e) 
{ 
    string AdminNumber = Convert.ToString(txtAdmin.Text); 
    string Name = Convert.ToString(txtName.Text); 
    string BlogStory = Convert.ToString(txtStory.Text); 
    string BlogType = cblType.SelectedValue; 
    insertGameRecord(AdminNumber, Name, BlogStory, BlogType); 
} 
+0

但如何編寫查詢?喜歡指定列字段BlogType @SpiderCode – Pony

+0

如果你不瞭解jQuery,可以使用我的第二個選項** OnCheckedChanged **。 – SpiderCode

+0

猜猜我會用第二個。但我認爲需要編寫代碼,以便它將知道列列字段進入數據庫@SpiderCode – Pony

0
  1. 你需要單選按鈕來代替複選框或下降downlist選擇任何一個選項..

我假設你創建了一個名爲下拉列表"drpBlogType"

protected void btnSubmit_Click(object sender, EventArgs e) 

{ 
    string AdminNumber = Convert.ToString(txtAdmin.Text); 
    string Name = Convert.ToString(txtName.Text); 
    string BlogStory = Convert.ToString(txtStory.Text); 
    // get value or dropdown 
    string BlogType = drpBlogType.SelectedValue; 


     insertGameRecord(AdminNumber, Name, BlogStory,BlogType); 
    } 

    private void insertGameRecord(string admin, string name, string story,string BlogType) 
    { 
     try 
     { 
      string strConnectionString = ConfigurationManager.ConnectionStrings["BlogConnectionString"].ConnectionString; 
      SqlConnection myConnect = new SqlConnection(strConnectionString); 

      string strCommandText = "INSERT EntryTable(AdminNumber, Name, BlogStory, DateEntry,BlogType) Values(@AdminNumber, @Name, @BlogStory, @DateEntry,@BlogType)"; 

      SqlCommand cmd = new SqlCommand(strCommandText, myConnect); 

      cmd.Parameters.AddWithValue("@AdminNumber", admin); 
      cmd.Parameters.AddWithValue("@Name", name); 
      cmd.Parameters.AddWithValue("@BlogStory", story); 
      cmd.Parameters.AddWithValue("@BlogType", BlogType); 

      cmd.Parameters.Add("DateEntry", SqlDbType.DateTime); 
      cmd.Parameters["DateEntry"].Value = DateTime.Now; 

      myConnect.Open(); 

      int result = cmd.ExecuteNonQuery(); 

      if (result > 0) 
      { lblError.Text = "Record Updated"; 
      bindResultGridView(); 
      } 

      else { lblError.Text = "Update fail"; } 

      myConnect.Close(); 
     } 
     catch(Exception) 
     { 
      lblError.Text = "Please enter correct data"; 
     } 


    } 
+0

但我的老師說使用複選框。 @Anant Dabhi – Pony

+0

和你想保存所有選定的複選框值到表? –

+0

nono。只需勾選一個複選框即可。 @Anant Dabhi – Pony

1

您是否有另一個BlogType表?如果是的話,我建議你在BlogType表和EntryTable之間創建另一個表。您可以將選定的複選框值存儲在此表中。表可以是這樣的。

ID << primary key 
BlogID << EntryTable referance id 
BlogTypeID << BlogType table referance id 

通過這種方式,您可以爲BlogId爲每個選中的複選框值插入一條新記錄。

enter image description here

+0

aw no,我只有1桌。 @serhads – Pony

+0

我只想讓一個複選框只被選中。我已經編輯過我的帖子了。 @serhads – Pony

+1

在這種情況下使用複選框是不合邏輯的。你可以使用radioobox或下拉菜單。並問你的老師爲什麼他/她推動你使用複選框? – serhads

相關問題