2017-10-15 59 views
0

我有一個訂購系統,顯示已收到的訂單以及尚未完成的訂單。如果訂單已收到,然後選中此複選框,我希望在收到訂單時將日期添加到數據庫。顯然,我只想將日期添加到已檢查的行中。提前致謝。如果在gridview中選中複選框,將日期添加到數據庫

相關的HTML如下:

      <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> 

我目前正在更新數據庫點擊一個更新接收按鈕時,見下圖:

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 

我知道有一個checkbox_CheckedChanged事件,但我我不確定如何使用它。

回答

0

您可以的CheckedChanged事件添加以下代碼:

CheckBox chkSelect = (CheckBox)sender; 

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

希望可以把它轉換成VB代碼。

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

這是給我的這是選中該複選框的日期有所幫助,但我還是有點在兩端以試圖讓已檢查CheckBox的ID。上面我使用的「For Each」部分顯而易見地貫穿每一行,我只希望選中的行。思考? – mooreev

0

因爲我認爲只有一個修改可以找到你的解決方案。 試試這個:

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; 
     } 
     } 
相關問題