C#ASP.NET复选框获胜';t在数据库中更新
本文关键字:数据库 更新 NET 复选框 获胜 C#ASP | 更新日期: 2023-09-27 18:20:40
似乎无法将我的复选框从前端代码连接到后端代码。我只想更新数据库中的复选框。
以下是来自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>
以及后端
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>");
}
}
首先,您应该考虑使用SqlParameters
,而不是将参数放在要查询的字符串中,以避免sql注入。
其次,UPDATE
不在INTO
之后,只是UPDATE OFFERS SET ACCEPT = @YOURVALUE, DECLINE = @YOUROTHERVALUE
,您应该考虑使用WHERE
子句,如果不使用,它将更新您的所有记录。
您需要以这种方式使用findcontrol
CheckBox findcheckbox = (CheckBox)Listview1.FindControl("AcceptCheckbox");
现在,在检查条件时,您需要使用findcheckbox
if(findcheckbox.Checked)
{
//your code
}
第1版:
基于评论的输入这里是按钮点击代码
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;
}
}