Попытка сохранить идентификатор представления списка - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь сохранить число идентификаторов записей из таблицы представления списка через флажок и другие значения, и я получил эту ошибку после того, как нажал кнопку отправки. Это говорит, что есть нуль. enter image description here

Вот заполнить таблицу:

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("cbEmpPart");
            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", 1);
                        cmd.Parameters.AddWithValue("@Active", 1);
                        cmd.Parameters.AddWithValue("@DateAdded", DateTime.Now);
                        cmd.ExecuteNonQuery();
                        //con.Close();

                    }
                }
            }
        }
    }
}

Вот это .aspx

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

            </td>
        </tr>
    </ItemTemplate>
</asp:ListView>

1 Ответ

0 голосов
/ 26 октября 2018

Начните с добавления DataKeyNames в ListView на странице aspx.

<asp:ListView ID="lvEmployees" runat="server" DataKeyNames="EmployeeID">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...