Bind Checkbox To Bit Field in Database (AJAX)
I have a checkbox that I want to load with a check in it if the entry in my gridview has been "processed" (processed means it has been checked by the user). I'm thinking the best way to do this is to have a field for each row called processed and include a checkbox in that row. When the user checks it, I want it to store a 1 in the database. also, when it loads, I want the checkbox to load with a check or not depending on that field in the database. I'm really having a hard time figuring out how to bind these two things together...I've looked at the syntax but I can't entirely tell what is going on. I have also tried it, and it doens't seem to be storing the information - because of this, I think my OnCheckedChanged event isn't working properly or at all. Any suggestions?
CS
public partial class vieworders : System.Web.UI.Page
{
private string orderByString;
private string fieldString;
private string address;
private DataGrid dataGrid = new DataGrid();
protected void Page_Load(object sender, EventArgs e)
{
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.
using (SqlConnection connection = new SqlConnection(connectionString.ToString()))
{
connection.Open();
SqlDataAdapter dataAdapter = new SqlDataAdapter(sqlStatement, connection);
// create an SqlCommandBuilder - this will automatically generate the
// commands, and set the appropriate properties in the dataAdapter
SqlCommandBuilder commandBuilder = new SqlCommandBuilder(dataAdapter);
// create the DataSet
DataSet dataSet = new DataSet();
// fill the DataSet using our DataAdapter
dataAdapter.Fill(dataSet, "SecureOrders");
SqlCommand cmd = new SqlCommand("SELECT * FROM SecureOrders", connection); // might not need this
DataView source = new DataView(dataSet.Tables[0]);
DefaultGrid.DataSource = source;
DefaultGrid.DataBind();
}
}
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;
if (cb.Checked)
{
OrderBrowser.Text = "checked";
}
else
{
OrderBrowser.Text = "unchecked";
}
}
}
ASPX
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="vieworders.aspx.cs" Inherits="Cabot3.custserv.vieworders" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID = "ScriptManager" runat="server" />
<div>
<div>
<asp:Label runat="server" id = "orderByLabel" Text = "Order By: " />
<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">
开发者_如何学JAVA <ItemTemplate>
<asp:CheckBox ID="CheckBoxProcess" OnCheckedChanged="CheckBoxProcess_CheckedChanged" AutoPostBack="true" runat="server" Enabled="true" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
<asp:TextBox ID="OrderBrowser" columns="70" Rows="14" runat="server" Wrap="false" TextMode="MultiLine" ReadOnly = "true">
</asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
You can bind the value like...
<ItemTemplate>
<asp:CheckBox ID="CheckBoxProcess" OnCheckedChanged="CheckBoxProcess_CheckedChanged"
Checked='<%# Eval("FieldName") %>' AutoPostBack="true" runat="server" Enabled="true" />
</ItemTemplate>
secondly update the value on CheckBox Checked/UnChecked
, you can use RowCommand
Event of gridview, where you can update the Field in DB. e.g.
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
{
if (e.CommandName == "")
{
}
}
精彩评论