[英]Selected check box in the list view item template is not storing
我正在嘗試使用asp:checkbox
將選定的行存儲到CourseParticipants
表中,但是它不將選定的記錄存儲到數據庫中。 沒有顯示錯誤,但刷新到同一頁面並顯示已檢查的記錄。 我正在嘗試選擇用戶。 先感謝您!
這是標記:
<table class="table table-hover">
<thead style="background-color: #92d36e">
<tr>
<td><b>Employee Name</b></td>
<td><b>Position</b></td>
<td><b>Actions</b></td>
</tr>
</thead>
<tbody>
<asp:ListView ID="lvEmployees" runat="server" OnPagePropertiesChanging="lvEmployees_PagePropertiesChanging" OnDataBound="lvEmployees_DataBound">
<ItemTemplate>
<tr>
<td><%# Eval("FirstName")%>,<%# Eval("LastName")%></td>
<td><%# Eval("Position")%></td>
<td><asp:CheckBox ID="cbEmployee" runat="server" />
</a></td>
</tr>
</ItemTemplate>
</asp:ListView>
</tbody>
</table>
<asp:Button ID="btnAddParticipants" runat="server"
class="btn btn-success" OnClick="btnAddParticipants_Click"
Text="Add Participants" />
這是C#
void GetEmployees()
{
using (SqlConnection con = new SqlConnection(Helper.GetCon()))
{
con.Open();
string query = @"SELECT EmployeeID, FirstName, LastName, Position FROM Employees";
using (SqlCommand cmd = new SqlCommand(query, con))
{
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "EmployeeID");
lvEmployees.DataSource = ds;
lvEmployees.DataBind();
con.Close();
}
}
}
protected void btnAddParticipants_Click(object sender, EventArgs e)
{
foreach (ListViewDataItem item in this.lvEmployees.Items)
{
string idValue = lvEmployees.DataKeys[item.DataItemIndex].Value.ToString();
if (item.ItemType == ListViewItemType.DataItem)
{
CheckBox cb = (CheckBox)item.FindControl("cbEmployee");
if (cb.Checked)
{
using (SqlConnection con = new SqlConnection(Helper.GetCon()))
{
con.Open();
string query = @"INSERT INTO CourseParticipants VALUES (@TrainingModuleID, @EmployeeID, @Active, @DateAdded)";
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.Parameters.AddWithValue("@TrainingModuleID", txtCourseID.Text);
cmd.Parameters.AddWithValue("@EmployeeID", idValue);
cmd.Parameters.AddWithValue("@Active", 1);
cmd.Parameters.AddWithValue("@DateAdded", DateTime.Now);
cmd.ExecuteNonQuery();
con.Close();
}
}
}
}
}
}
如果始終是DateTime.Now
,現在要插入什么內容,則可以使用getdate()
函數:
string query = @"INSERT INTO CourseParticipants VALUES (@TrainingModuleID, @EmployeeID, @Active, getdate())";
using (SqlCommand cmd = new SqlCommand(query, con))
{
cmd.Parameters.AddWithValue("@TrainingModuleID", txtCourseID.Text);
cmd.Parameters.AddWithValue("@EmployeeID", idValue);
cmd.Parameters.AddWithValue("@Active", 1);
cmd.ExecuteNonQuery();
}
但這是特定於數據庫的,那么您正在使用什么數據庫? https://docs.microsoft.com/zh-cn/sql/t-sql/functions/getdate-transact-sql?view=sql-server-2017
我還將根據您的數據庫方案將txtCourseID.Text
轉換/轉換為整數(32或64)。 只是為了確保它是一個OK值...而不是字符串(nvarchar)。 我還刪除了連接的關閉部分,因為它位於using塊中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.