2011-07-11 14 views
0

チェックボックスをオンまたはオフにするたびにデータベースに書き込もうとしています。チェックボックスがチェックされている場合は1(ビット値)を、それ以外の場合は0を格納できるようにします。この方法で、チェックされている場合、フォームがロードされると、チェックボックスにチェックが表示されます。それ以外の場合は、1つもありません。ここで私はこれまで持っているものです。データベースのビット値を更新する

C# 
    public partial class vieworders : System.Web.UI.Page 
{ 
    private string orderByString; 
    private string fieldString; 
    private string address; 
    private DataGrid dataGrid = new DataGrid(); 
    SqlDataAdapter dataAdapter; 
    DataSet dataSet; 


    protected void Page_Load(object sender, EventArgs e) 
    { 
     if (!IsPostBack) 
     { 
      orderByString = orderByList.SelectedItem.Value; 
      fieldString = searchTextBox.Text; 
      string sqlStatement = "SELECT fName,lName,zip,email,cwaSource,price,length FROM SecureOrders WHERE fName LIKE '%" + fieldString + "%' OR lName LIKE'%" + fieldString + "%' OR zip LIKE'%" + fieldString + "%' OR zip LIKE'%" + fieldString + "%' OR email LIKE'%" + fieldString + "%' OR cwaSource LIKE'%" + fieldString + "%' OR length LIKE'%" + fieldString + "%' OR price LIKE'%" + fieldString + "%' ORDER BY " + orderByString; 
      //////////////////////////// 




      connectionString = rootWebConfig.ConnectionStrings.ConnectionStrings["secureodb"]; 

      //TEST 
      for (int i = 0; i < DefaultGrid.Rows.Count; i++) 
      { 
       CheckBox chkUpdate = (CheckBox)DefaultGrid.Rows[i].Cells[1].FindControl("CheckBoxProcess"); 
       if (chkUpdate != null) 
       { 
        OrderBrowser.Text += "Test"; 
       } 
      } 



      // Create an SqlConnection to the database. 
      // Create an SqlConnection to the database. 
      using (SqlConnection connection = new SqlConnection(connectionString.ToString())) 
      { 
       connection.Open(); 

       dataAdapter = new SqlDataAdapter("SELECT * FROM SecureOrders", connection); 

       // create the DataSet 
       dataSet = new DataSet(); 
       // fill the DataSet using our DataAdapter    
       dataAdapter.Fill(dataSet, "SecureOrders"); 

       DataView source = new DataView(dataSet.Tables[0]); 
       DefaultGrid.DataSource = source; 
       DefaultGrid.DataBind(); 
       connection.Close(); 
      } 
     } 


     } 




    protected void DefaultGrid_SelectedIndexChanged(Object sender, EventArgs e) 
    { 
     GridViewRow row = DefaultGrid.SelectedRow; 
     string name = "Name: " + row.Cells[2].Text + " " + row.Cells[3].Text + "\r\n"; 
     // if (row.Cells[4].Text == "&nbsp;") 
     //{ 
      //address = "Address: " + row.Cells[3].Text + "\r\n   " + row.Cells[5].Text + ", " + row.Cells[6].Text + " " + row.Cells[7].Text + " " + row.Cells[8].Text + "\r\n"; 

     // } 
     //else 
     // { 
      // address = "Address: " + row.Cells[3].Text + "\r\n   " + row.Cells[4].Text + "\r\n   " + row.Cells[5].Text + ", " + row.Cells[6].Text + " " + row.Cells[7].Text + " " + row.Cells[8].Text + "\r\n"; 
     //} 

     string zip = "Zip: " + row.Cells[4].Text + "\r\n"; 
     string email = "Email: " + row.Cells[5].Text + "\r\n"; 
     //string phone = "Phone: " + row.Cells[10].Text + "\r\n"; 
     //string cctype = "Credit Card Type: " + row.Cells[11].Text + "\r\n"; 
     //string ccnum = "Credit Card Number: " + row.Cells[12].Text + "\r\n"; 
     //string ccexp = "Credit Card Expiration: " + row.Cells[13].Text + "\r\n"; 
     string length = "Length: " + row.Cells[8].Text + "\r\n"; 
     //string delivery = "Delivery: " + row.Cells[15].Text + "\r\n"; 
     string price = "Price: " + row.Cells[7].Text + "\r\n"; 
     string source = "Source: " + row.Cells[6].Text + "\r\n"; 
     //string joined = "Joined: " + row.Cells[18].Text + "\r\n"; 
     //string url = "URL: " + row.Cells[19].Text + "\r\n"; 

     OrderBrowser.Text = name + email + length + price + source; 
    } 

    protected void CheckBoxProcess_CheckedChanged(object sender, EventArgs e) 
    { 
     CheckBox cb = (CheckBox)sender; 
     GridViewRow gr = (GridViewRow)cb.NamingContainer; 




     connectionString = rootWebConfig.ConnectionStrings.ConnectionStrings["secureodb"]; 

     using (SqlConnection connection = new SqlConnection(connectionString.ToString())) 
     { 
      connection.Open(); 


      dataAdapter = new SqlDataAdapter("SELECT * FROM SecureOrders", connection); 

      // create the DataSet 
      dataSet = new DataSet(); 
      // fill the DataSet using our DataAdapter    
      dataAdapter.Fill(dataSet, "SecureOrders"); 
      DataSet myDSchanged = dataSet.GetChanges(DataRowState.Modified); 
      SqlCommandBuilder builder = new SqlCommandBuilder(dataAdapter); 

      dataAdapter.Update(myDSchanged, "SecureOrders"); 
      dataSet.AcceptChanges(); 
      connection.Close(); 
     } 




    } 

    } 

のaspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="vieworders.aspx.cs" Inherits="Cabot3.custserv.vieworders" %> 

 <asp:DropDownList runat="server" ID="orderByList" AutoPostBack="true"> 
      <asp:ListItem Value="fName" Selected="True">First Name</asp:ListItem> 
      <asp:ListItem Value="lName">Last Name</asp:ListItem> 
      <asp:ListItem Value="state">State</asp:ListItem> 
      <asp:ListItem Value="zip">Zip Code</asp:ListItem> 
      <asp:ListItem Value="cwaSource">Source</asp:ListItem> 
      <asp:ListItem Value="cwaJoined">Date Joined</asp:ListItem> 
     </asp:DropDownList> 
    </div> 
    <div> 
     <asp:Label runat="server" ID="searchLabel" Text="Search For: " /> 
     <asp:TextBox ID="searchTextBox" runat="server" Columns="30" /> 
     <asp:Button ID="searchButton" runat="server" Text="Search" /> 
    </div> 
<div> 
<asp:UpdatePanel ID = "up" runat="server"> 



    <ContentTemplate> 
    <div style= "overflow:auto; height:150px; width:700px"> 
    <asp:GridView ID="DefaultGrid" runat = "server" DataKeyNames = "fName, lName, zip" 
    onselectedindexchanged = "DefaultGrid_SelectedIndexChanged" 
    autogenerateselectbutton = "true" 
    selectedindex="0"> 
    <SelectedRowStyle BackColor="Azure" 
    forecolor="Black" 
    font-bold="true" /> 
    <Columns> 
    <asp:TemplateField HeaderText="Processed"> 
       <ItemTemplate> 
        <asp:CheckBox ID="CheckBoxProcess" AutoPostBack = "true" Checked ='<%#Eval("processed") %>' OnCheckedChanged="CheckBoxProcess_CheckedChanged" runat="server" Enabled="true" /> 
       </ItemTemplate> 
      </asp:TemplateField> 
    </Columns> 
    </asp:GridView> 
    </div> 
    </div> 
    <asp:TextBox ID="OrderBrowser" columns="70" Rows="14" runat="server" Wrap="false" TextMode="MultiLine" ReadOnly = "true"/> 
    </ContentTemplate> 
    </asp:UpdatePanel> 



</div> 
</form> 

誰かが私を正しい方向に向けることができますか?

+0

この宿題はありますか? –

+0

いいえ、それはありません!なぜ、私は事を完全に間違っているのですか? –

+0

「私たち」と言うとき、私は自分の会社を意味します。 –

答えて

1

これは私があなたのためにヘルパーメソッドとして書いた静的メソッドです。ブール値をとり、列に0または1ビットの値を設定します。もちろん、これをテーブル名、カラム名などで変更する必要があります。これを行う方法を示す簡単なテストデータベースを作成しました。

ここでは、行がデータベースにすでに存在していることを前提としています。私のテストデータベースでは、私のテーブルは、 '設定' という名前の、3列ありさ:

  • ID(int型)
  • 名(データ型はnvarchar(50))
  • 値(データ型はnvarchar(50))

IDが0、名前が 'CheckboxState'、値が0の行が既に存在しています。最初はデータベースの行を最初に配置するメカニズムが必要です。

しかし、コードビハインドでこれを呼び出すだけで、CheckBox.Checkedプロパティを渡すことができます。

static void UpdateCheckedState(bool state) { 
    string connectionstring = "<yourconnectionstring>"; 
    using (SqlConnection connection = new SqlConnection(connectionstring)) { 
     try { 
      connection.Open(); 
     } 
     catch (System.Data.SqlClient.SqlException ex) { 
      // Handle exception 
     } 
     string updateCommandText = "UPDATE Settings SET Value = @state WHERE Name = 'CheckboxState'"; 
     using (SqlCommand updateCommand = new SqlCommand(updateCommandText, connection)) { 
      SqlParameter stateParameter = new SqlParameter("state", state); 
      updateCommand.Parameters.Add(stateParameter); 
      try { 
       updateCommand.ExecuteNonQuery(); 
      } 
      catch (System.Data.SqlClient.SqlException ex) { 
       // Handle exception 
      } 
     } 
    } 
} 
+0

ありがとうございます - 私はこれを試してみるつもりです。データベース内のフィールドは「処理済み」、列IDは「CheckBoxProcess」であり、すべてが最初にチェックされているので、値は1です! –

関連する問題