简体   繁体   English

C# ASP.NET 复选框不会在数据库中更新

[英]C# ASP.NET Checkboxes won't update in Database

Cant seem to connect my checkboxes from front end code to connect to my back end code.似乎无法将我的复选框从前端代码连接到我的后端代码。 I want to update only my checkboxes in the database.我只想更新数据库中的复选框。

Here's the front end code from the SQL source and the end of the Listview下面是SQL源码的前端代码和Listview的结尾

 <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:DefaultConnection %>"
 SelectCommand="SELECT Create_Project.ProjectID, Create_Project.ProjectName, Create_Project.ProjectStartDate, Create_Project.ProjectEndDate, Offers.OfferID, Offers.UserID, Offers.Accept, Offers.Decline 
                FROM Create_Project 
                INNER JOIN Offers ON Create_Project.ProjectID = Offers.ProjectID 
                WHERE (Offers.UserID = @UserID) 
                ORDER BY Create_Project.ProjectStartDate DESC">
                <SelectParameters>
                    <asp:QueryStringParameter Name="UserID" QueryStringField="searchID" />
                </SelectParameters>
            </asp:SqlDataSource>


            <asp:ListView ID="ListView1" runat="server" DataKeyNames="ProjectID,OfferID" DataSourceID="SqlDataSource1">
                <AlternatingItemTemplate>
                </AlternatingItemTemplate>
                <EditItemTemplate>
                </EditItemTemplate>
                <EmptyDataTemplate>
                    <table runat="server" style="">
                        <tr>
                            <td>No data was returned.</td>
                        </tr>
                    </table>
                </EmptyDataTemplate>
                <InsertItemTemplate>
                </InsertItemTemplate>
                <ItemTemplate>
                    <tr style="">
                        <td>
                            <asp:Label ID="ProjectIDLabel" runat="server" Text='<%# Eval("ProjectID") %>' />
                        </td>
                        <td>
                            <asp:Label ID="ProjectNameLabel" runat="server" Text='<%# Eval("ProjectName") %>' />
                        </td>
                        <td>
                            <asp:Label ID="ProjectStartDateLabel" runat="server" Text='<%# Eval("ProjectStartDate") %>' />
                        </td>
                        <td>
                            <asp:Label ID="ProjectEndDateLabel" runat="server" Text='<%# Eval("ProjectEndDate") %>' />
                        </td>
                        <td>
                            <asp:Label ID="OfferIDLabel" runat="server" Text='<%# Eval("OfferID") %>' />
                        </td>
                        <td>
                            <asp:Label ID="UserIDLabel" runat="server" Text='<%# Eval("UserID") %>' />
                        </td>
                        <td>
                            <asp:CheckBox ID="AcceptCheckBox" runat="server" Text="Accept"/>
                        </td>
                        <td>
                            <asp:CheckBox ID="DeclineCheckBox" runat="server" Text="Decline"/>
                        </td>
                        <td>
                        <asp:Button ID="Button1"  runat="server" Text="Save" class="btn btn-success" OnClick="Button1_Click" />
                        </td>
                    </tr>
                </ItemTemplate>
                <LayoutTemplate>
                    <table runat="server">
                        <tr runat="server">
                            <td runat="server">
                                <table id="itemPlaceholderContainer" runat="server" border="0" style="">
                                    <tr runat="server" style="">
                                        <th runat="server">ProjectID</th>
                                        <th runat="server">ProjectName</th>
                                        <th runat="server">ProjectStartDate</th>
                                        <th runat="server">ProjectEndDate</th>
                                        <th runat="server">OfferID</th>
                                        <th runat="server">UserID</th>
                                        <th runat="server">Accept</th>
                                        <th runat="server">Decline</th>
                                    </tr>
                                    <tr id="itemPlaceholder" runat="server">
                                    </tr>
                                </table>
                            </td>
                        </tr>
                        <tr runat="server">
                            <td runat="server" style=""></td>
                        </tr>
                    </table>
                </LayoutTemplate>
                <SelectedItemTemplate>
                </SelectedItemTemplate>
            </asp:ListView>

And the back End和后端

protected void Button1_Click(object sender, EventArgs e)
        {
            SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString);
            conn.Open();
            {
                bool Accept = false;
                bool Decline = false;

                foreach (ListViewDataItem item in Listview1.Items)
                {
                    CheckBox findcheckbox = (CheckBox)item.FindControl("AcceptCheckbox");

                    if (findcheckbox.Checked)
                    {
                        Accept = true;
                        Decline = false;
                    }
                    else
                    {
                        Accept = false;
                        Decline = true;
                    }
                }
                string selectString = "UPDATE Offers SET (Accept, Decline VALUES ('" + Accept + "', '" + Decline + "')";
                SqlCommand usersql = new SqlCommand(selectString, conn);
                usersql.ExecuteNonQuery();
                Response.Write("<script type='text/javascript'>");
                Response.Write("alert('You have made your decision');");
                Response.Write("document.location.href='Offers.aspx';");
                Response.Write("</script>");


            }
        }

First you should consider use SqlParameters instead putting your arguments inside a string to query to avoid sql injection.首先,您应该考虑使用SqlParameters而不是将参数放在字符串中进行查询,以避免 sql 注入。

Second, UPDATE does not follow INTO , is just UPDATE OFFERS SET ACCEPT = @YOURVALUE, DECLINE = @YOUROTHERVALUE and you should consider use a WHERE clause, if not, it will update all your records.其次, UPDATE不跟随INTO ,只是UPDATE OFFERS SET ACCEPT = @YOURVALUE, DECLINE = @YOUROTHERVALUE并且您应该考虑使用WHERE子句,如果没有,它将更新您的所有记录。

You need to use findcontrol in this way你需要这样使用findcontrol

 CheckBox findcheckbox = (CheckBox)Listview1.FindControl("AcceptCheckbox");

Now while checking condition you need to use findcheckbox现在在检查条件时,您需要使用findcheckbox

if(findcheckbox.Checked)
{
//your code
}

Edit1:编辑1:

Based on Inputs from the Comments Here is the Button_click code基于来自评论的输入这里是 Button_click 代码

    protected void Button1_Click(object sender, EventArgs e) {
     try
     {


         SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["DefaultConnection"].ToString());
         conn.Open();
         {
             bool Accept = false;
             bool Decline = false;
             foreach (ListViewDataItem item in ListView1.Items)
             {
                 CheckBox findcheckbox = (CheckBox)item.FindControl("AcceptCheckbox");

                 if (findcheckbox.Checked)
                 {
                     Accept = true;
                     Decline = false;
                 }
                 else
                 {
                     Accept = false;
                     Decline = true;

                 }
             }
             string selectString = "UPDATE Offers SET (Accept, Decline VALUES ('" + Accept + "', '" + Decline + "')";
             SqlCommand usersql = new SqlCommand(selectString, conn);
             usersql.ExecuteNonQuery();
             Response.Write("<script type='text/javascript'>");
             Response.Write("alert('You have made your decision');");
             Response.Write("document.location.href='Offers.aspx';");
             Response.Write("</script>");


         }
     }
     catch(Exception ex)
     {
         throw ex;
     }
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM