Update database bit value
I'm trying to write to a database whenever a checkbox is checked or unchecked. We want to be able to store a 1 (bit value) if the checkbox is checked, and a 0 if it is not. This way, if it has been checked, when the form loads up, we will see a check in the checkbox. Otherwise, there won't be one. Here is what I have so far:
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;
开发者_如何学Go 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 == " ")
//{
//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>
Can anybody steer me in the right direction?
This is a static method I wrote as a helper method for you. It takes a boolean value, and sets a 0 or 1 bit value in a column. You would of course need to modify this with your table name, column names, etc. I just created a simple test database to show you how to do this.
Now, this assumes that the row already exists in the database. In my test database my table is named 'Settings', and has three columns:
- ID (int)
- Name (nvarchar(50))
- Value (nvarchar(50))
A row already exists with an ID of 0, name of 'CheckboxState' and a Value of 0. So initially you should have some sort of mechanism that places the row in the database in the first place.
But, essentially, you could just call this in the code-behind, and pass the CheckBox.Checked property into it.
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
}
}
}
}
精彩评论