Refre sh значение GridView, которое заполняется SQL источником данных - PullRequest
0 голосов
/ 02 апреля 2020

Я заполняю значения при загрузке страницы в виде сетки, используя SQLDataSource. Я могу видеть все значения правильно. Теперь я также добавил столбец флажок в качестве поля шаблона. Итак, если я установлю флажок перед строкой, он удалит эту строку из базы данных, но все же я смогу увидеть эту же строку в виде сетки. Теперь, если я обновлю sh страницу, значения исчезли (так как запрос работал без ошибок), но я не хочу обновлять sh страницу для каждой записи. Я хочу обновить sh вид сетки при нажатии кнопки. я попытался GridView.Update () Cand gridview.refre sh, но обе функции выдают ошибку во время выполнения. см. код ниже.

int i = 0;
            int j = 0;
            for (i = 0; i < GridView1.Rows.Count; i++)
            {
                CheckBox CH = (CheckBox)GridView1.Rows[i].FindControl("CheckBox4");
                Label DebitSrNo = (Label)GridView1.Rows[i].FindControl("Label2");
                Label DebitDate = (Label)GridView1.Rows[i].FindControl("lblDebitDate");

                if (CH.Checked == true)
                {
                    for (j = 0; j < GridView2.Rows.Count; j++)
                    {
                        CheckBox CreditCheckBox = (CheckBox)GridView2.Rows[j].FindControl("chkCreditBalance");
                        Label lb1 = (Label)GridView2.Rows[j].FindControl("lblSrNoCredit");
                        Label CreditDate = (Label)GridView2.Rows[j].FindControl("lblCreditDate");
                        if (CreditCheckBox.Checked == true)
                        {
                            if ((Convert.ToDateTime(CreditDate.Text) > Convert.ToDateTime(DebitDate.Text)))
                            {
                                string query = "UPDATE [BALANCE_CREDIT] SET STATUS = 1 WHERE SR_NO = {sr_no}";
                                query = query.Replace("{sr_no}", lb1.Text);
                                SqlConnection conn = OpenDBConnection();
                                int AffectedRows = 0;
                                SqlCommand cmd = new SqlCommand(query, conn);
                                AffectedRows = cmd.ExecuteNonQuery();
                                query = "UPDATE [BALANCE_DEBIT] SET STATUS = 1 WHERE SR_NO = {sr_no}";
                                query = query.Replace("{sr_no}", DebitSrNo.Text);
                                cmd = new SqlCommand(query, conn);
                                AffectedRows = cmd.ExecuteNonQuery();
                                CloseConnection(conn);
                                GridView1.Rows.Remove(2);//here it is giving runtime error. so as for update and refresh
                            }

                        }
                    }
                }

1 Ответ

0 голосов
/ 03 апреля 2020

Последняя строка, в которой вы получаете ошибку времени выполнения

 GridView1.Rows.Remove(2)

измените ее на

GridView1.Rows.RemoveAt(j);

, это будет работать.

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