【问题标题】:add date to database if checkbox checked in gridview如果在gridview中选中复选框,则将日期添加到数据库
【发布时间】:2018-03-27 02:15:38
【问题描述】:

我有一个订购系统,显示已收到的订单以及未完成的订单。如果收到订单并选中复选框,我想将收到订单的日期添加到数据库中。显然,我只想将日期添加到已检查的行中。提前致谢。

相关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 事件,但我不确定如何使用它。

【问题讨论】:

    标签: asp.net gridview checkbox


    【解决方案1】:

    您可以在 CheckedChanged 事件中添加此代码:

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

    希望能把它转换成VB的代码。

    【讨论】:

      【解决方案2】:

      我认为只有一种修改才能找到您的解决方案。 试试这个:

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

      【讨论】:

        【解决方案3】:
        protected void chkRcvd_CheckedChanged(object sender, EventArgs e)
        {
            CheckBox chkSelect = (CheckBox)sender;
        
            if (chkSelect.Checked)
            {
                string date = DateTime.Today.ToString("dd-MM-yyyy");
            }
        }
        

        【讨论】:

        • 这有助于给我选择 CheckBox 的日期,但我在尝试获取已检查的 CheckBox 的 id 时仍然有点力不从心。我在上面使用的“For Each”部分明显地贯穿了每一行,我只想要已选择的行。想法?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-11
        • 1970-01-01
        • 2013-11-08
        • 2014-07-07
        • 2013-01-06
        • 1970-01-01
        相关资源
        最近更新 更多