2011-07-07 15 views
2

グリッドビュー内のエントリが「処理済み」(処理されたということは、ユーザーがチェックしたことを意味します)のチェックボックスをチェックしてロードします。私はこれを行う最善の方法は、処理された各行のフィールドを持って、その行にチェックボックスを含めることだと思っています。ユーザーがチェックすると、データベースに1を格納します。また、ロード時に、チェックボックスをデータベースのそのフィールドに応じてチェックでロードするかどうかをチェックします。私は実際にこれらの2つのものを結びつける方法を考え出すのに苦労しています...構文を見てきましたが、何が起こっているのかを完全には伝えられません。私も試してみましたが、情報を格納しているようには見えません。このため、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> 

は、第二のCheckBox Checked/UnChecked上の値を更新し、あなたはのRowCommandイベントを使用することができますグリッドビューでは、DB内のフィールドを更新することができます。例えば

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

    } 
} 
+0

"FieldName"については、どうすれば設定できますか?何らかのパラメータを設定する必要がありますか? –

+0

DataSourceをGridViewにバインドしていませんか?あなたのDataSource FieldName。 –

+0

CSファイルにバインドされています - 私はあなたを見ることができます - コードを更新します –

関連する問題