2017-10-15 1 views
0

Ich habe ein Bestellsystem, das Bestellungen anzeigt, die eingegangen sind, und auch Bestellungen, die ausstehen. Wenn der Auftrag empfangen wird und das Kontrollkästchen aktiviert ist, möchte ich das Datum bei der Bestellung in die Datenbank aufnehmen. Offensichtlich möchte ich nur das Datum zu der Zeile hinzufügen, die überprüft wurde. Danke im Voraus.Datum zur Datenbank hinzufügen, wenn Kontrollkästchen in gridview aktiviert ist

relevanten HTML wie folgt:

      <asp:GridView ID="gvOpenOrders" runat="server" AutoGenerateColumns="False" Width="100%" CellPadding="4" ForeColor="#333333" 
           GridLines="None" DataKeyNames="PurchaseOrderID" AllowPaging="True" AllowSorting="True" 
           OnSorting="gvOpenOrders_Sorting" EnableViewState="true" OnPageIndexChanging="OnPageIndexChanging" PageSize="15" ViewStateMode="Enabled"> 
           <AlternatingRowStyle BackColor="White" /> 
           <Columns> 
            <asp:TemplateField HeaderText="Is Received" SortExpression="IsReceived"> 
             <ItemTemplate> 
              <asp:CheckBox ID="chkRcvd" runat="server" AutoPostBack="true" Checked='<%# Bind("IsReceived") %>' Enabled='<%# Eval("IsReceived") = False %>' OnCheckedChanged="chkRcvd_CheckedChanged" /> 
             </ItemTemplate> 
            </asp:TemplateField> 

Ich bin derzeit die Aktualisierung der Datenbank, wenn ein Update erhalten Schaltfläche geklickt wird, siehe unten:

Protected Sub btnUpdateReceived_Click(sender As Object, e As EventArgs) Handles btnUpdateReceived.Click 

    con.Open() 
    For Each row As GridViewRow In gvOpenOrders.Rows 
     Dim purchaseOrderID As Integer = Convert.ToInt32(gvOpenOrders.DataKeys(row.RowIndex).Values(0)) 
     Dim isReceived As Boolean = TryCast(row.FindControl("chkRcvd"), CheckBox).Checked 

     cmd.CommandText = "usp_UpdatePurchaseOrder" 
     cmd.CommandType = CommandType.StoredProcedure 
     cmd.Parameters.Clear() 
     cmd.Parameters.AddWithValue("@OrderID", purchaseOrderID) 
     cmd.Parameters.AddWithValue("@IsReceived", isReceived) 
     cmd.ExecuteNonQuery() 
    Next 
    con.Close() 
    Response.Redirect(Request.Url.AbsoluteUri) 

End Sub 

Ich weiß, dass es ein Ereignis checkbox_CheckedChanged ist, aber ich bin unsicher, wie man es benutzt.

Antwort

0

Sie können diesen Code in CheckedChanged Ereignis hinzufügen:

CheckBox chkSelect = (CheckBox)sender; 

if (chkSelect.Checked) 
{ 
    string date = DateTime.Today.ToString("dd-MM-yyyy"); 
} 

Hoffnung es in VB-Code umwandeln könnte.

0
protected void chkRcvd_CheckedChanged(object sender, EventArgs e) 
{ 
    CheckBox chkSelect = (CheckBox)sender; 

    if (chkSelect.Checked) 
    { 
     string date = DateTime.Today.ToString("dd-MM-yyyy"); 
    } 
} 
+0

Dies ist hilfreich, mir das Datum zu geben, dass die Checkbox ausgewählt wurde, aber ich bin immer noch ein wenig an den Enden zu versuchen, die ID des CheckBox zu erhalten, die überprüft worden ist. Der Abschnitt "Für jeden", den ich oben verwende, durchläuft jede Zeile, in der ich nur die ausgewählte Zeile haben möchte. Gedanken? – mooreev

0

Wie ich denke, nur eine Modifikation kann Ihre Lösung finden. Try this:

string strDate=stirng.Empty; 
foreach (GridViewRow rw in grid1.Rows) 
     { 
      CheckBox chkBx = (CheckBox)rw.FindControl("Check"); 
      if (chkBx != null && chkBx.Checked) 
      {    
       strDate = ((Label)rw.FindControl("lblDate")).Text; 
     } 
     } 
Verwandte Themen