обновление столбца в зависимости от значения флажка - PullRequest
0 голосов
/ 14 апреля 2011

Я пытаюсь обновить столбец в моей базе данных, основываясь на том, установлен ли флажок или нет в сетке.Также обновление происходит только после нажатия кнопки.Возможно, проблема в моем синтаксисе, поэтому, если кто-то сможет исправить меня, это будет очень полезно.

Смотрите здесь мой код:

protected void ButtonAfTeHalen_Click(object sender, EventArgs e)
    {
       foreach (GridViewRow r in GridViewOrders.Rows)
       {
          if (((CheckBox)r.Cells[0].FindControl("CheckBoxATH")).Checked == true
                        && (Label)r.Cells[3].FindControl("LabelOrderID") != null)
          {
              string conn2 = "Data Source=pc-...";
              CheckBox checkBoxATH = (CheckBox)GridViewOrders.FindControl("CheckBoxATH");
              Label orderID = (Label)r.Cells[3].FindControl("LabelOrderID");
              LabelTestID.Visible = true;
              LabelTestID.Text = orderID.Text.ToString();

              System.Data.SqlClient.SqlConnection sqlConn10 = new System.Data.SqlClient.SqlConnection(conn2);
              sqlConn10.Open();
              System.Data.SqlClient.SqlCommand updateCommand =
                   new System.Data.SqlClient.SqlCommand("UPDATE tblOrders SET Status= " + checkBoxATH.Checked + " WHERE tOrderId=@orderID", sqlConn10);
                updateCommand.Parameters.AddWithValue("@orderID", LabelTestID.Text);
                updateCommand.ExecuteNonQuery();
          }
       }
    }

Ошибка говорит: ссылка на объект не установлена ​​на экземпляробъекта.

Ошибка @ оператор обновления.Но он показывает идентификатор заказа на этикетке.Только идентификатор самого низкого проверенного порядка в сетке, но не все выбранные идентификаторы.

С уважением, Мати

Ответы [ 3 ]

1 голос
/ 15 апреля 2011

Эй, я нашел решение. Вот мой код (проголосуйте, если хотите;))

        for (int i = 0; i < GridViewOrder.Rows.Count; i++)
        {
            CheckBox ck = (CheckBox)GridViewOrder.Rows[i].Cells[0].FindControl("CheckBoxATH");
            Label orderID = (Label)GridViewOrder.Rows[i].Cells[5].FindControl("LabelOrderID");

            if (ck != null)
            {
                string conn = "Data Source=pc-...";
                System.Data.SqlClient.SqlConnection sqlConn = new System.Data.SqlClient.SqlConnection(conn);
                sqlConn.Open();
                System.Data.SqlClient.SqlCommand updateCommand = new System.Data.SqlClient.SqlCommand("UPDATE tblOrders SET tOrderATH = '" + ck.Checked + "' WHERE tOrderId= '" + orderID.Text + "'", sqlConn);
                updateCommand.Parameters.AddWithValue("@orderID", orderID.Text);
                updateCommand.ExecuteNonQuery();
            }
        }
0 голосов
/ 14 апреля 2011

Я тоже столкнулся с той же проблемой. Я решил это таким образом, надеюсь, это также решит вашу проблему ..

     if ((Boolean)((DataGridViewCheckBoxCell)r.Cells[0].FindControl("CheckBoxATH").FormattedValue)
 && (Label)r.Cells[3].FindControl("LabelOrderID") != null)

Здесь я использовал formattedvalue, потому что состояние флажка не изменилось, поскольку оно дает нулевое значение.

В ячейке флажка datagridview работает таинственным образом, если флажок установлен, то иногда он дает значение true, а иногда дает значение флажок ...

0 голосов
/ 14 апреля 2011

Звучит как нулевая ссылка на меня.Проверьте все ссылки, использованные в вашем заявлении об обновлении, и убедитесь, что они не равны нулю.

// daniel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...