2011-07-07 83 views
2

我有一個複選框,如果我的gridview中的條目已經被「處理」(處理意味着它已經被用戶檢查過),我想在其中加載檢查。我在想,最好的方法是爲每行調用一個字段進行處理,並在該行中包含一個複選框。當用戶檢查它時,我希望它在數據庫中存儲1。另外,當它加載時,我希望複選框加載一個檢查或不根據數據庫中的該字段。我真的很難弄清楚如何將這兩件事綁在一起......我已經看過了這個語法,但是我不能完全知道發生了什麼。我也嘗試過了,它似乎沒有存儲信息 - 因此,我認爲我的OnCheckedChanged事件無法正常工作或根本無法正常工作。有什麼建議麼?將複選框綁定到數據庫中的位字段(AJAX)

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 == "&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; 
     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"> 
        <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> 

回答

1

您可以將值綁定一樣...

<ItemTemplate> 
    <asp:CheckBox ID="CheckBoxProcess" OnCheckedChanged="CheckBoxProcess_CheckedChanged" 
      Checked='<%# Eval("FieldName") %>' AutoPostBack="true" runat="server" Enabled="true" /> 
    </ItemTemplate> 

其次更新複選框Checked/UnChecked值,你可以使用RowCommand事件gridview,您可以在其中更新數據庫中的字段。例如

protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    if (e.CommandName == "") 
    { 

    } 
} 
+0

對於「FieldName」,我該如何設置?我必須設置某種參數嗎? –

+0

您是不是將DataSource綁定到GridView?您的DataSource FieldName。 –

+0

它被綁定在CS文件中 - 我可以告訴你 - 我將更新代碼 –

相關問題