Выделите последнюю вставленную строку GridView asp.net

У меня есть пейджинговый GridView в моем проекте ASP.NET, в котором я делаю вставки человеческих ресурсов в базу данных. Мой GridView загружает каждый раз все человеческие ресурсы, вставленные в базу данных. Теперь каждый раз, когда я добавляю новую строку (человеческий ресурс) или изменяю существующую, я хочу, чтобы она была выделена в сетке, чтобы дать понять пользователю, что операция была выполнена. Я еще не нашел хороший способ, и тот факт, что просмотр сетки разбит на страницы, делает его более сложным. Буду признателен за помощь:)

Я добавляю строки, связывая сетку de с таблицей данных:

protected void llenarGrid()        //se encarga de llenar el grid cada carga de pantalla
    {
        DataTable recursosHumanos = crearTablaRH();
        DataTable dt = controladoraRecursosHumanos.consultarRecursoHumano(1, 0); // en consultas tipo 1, no se necesita la cédula

        Object[] datos = new Object[4];


        if (dt.Rows.Count > 0)
        {
            foreach (DataRow dr in dt.Rows)
            {
                datos[0] = dr[0];
                datos[1] = dr[1];
                datos[2] = dr[2];
                int id = Convert.ToInt32(dr[3]);
                String nomp = controladoraRecursosHumanos.solicitarNombreProyecto(id);
                datos[3] = nomp;
                recursosHumanos.Rows.Add(datos);
            }
        }
        else
        {
            datos[0] = "-";
            datos[1] = "-";
            datos[2] = "-";
            datos[3] = "-";
            recursosHumanos.Rows.Add(datos);
        }
        RH.DataSource = recursosHumanos;
        RH.DataBind();

    }



   protected DataTable crearTablaRH()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("Cedula", typeof(int));
        dt.Columns.Add("Nombre Completo", typeof(String));
        dt.Columns.Add("Rol", typeof(String));
        dt.Columns.Add("Nombre Proyecto");
        //dt.
        return dt;
    }

2 ответа

Решение

Сохраните первичный ключ / уникальное значение, которое однозначно идентифицирует строку в состоянии просмотра при вставке строки:

Давайте предположим, что первый столбец имеет уникальное значение. Добавьте строку ниже в конце вашего llenarGrid() метод.

 ViewState["LastRowUniqueValue"] = datos[0];

Обрабатывать Page_PreRender событие, выделите вставленную строку:

protected void Page_PreRender(object sender, EventArgs e)
    {
        string lastInsertedRowValue = string.Empty;

        // only highlight the row if last inserted values are NOT a Hyphen -

        if (ViewState["LastRowUniqueValue"] != "-")
        {
            // Assuming the Unique value is String, else cast accordingly
            string lastInsertedRowValue = (string)ViewState["LastRowUniqueValue"];

            int rowCnt = 0;
            foreach (GridViewRow row in GridView1.Rows)
            {
               string CellText = row.Cells[0].Text;
                if (CellText.Equals(lastInsertedRowValue))
                {
                    row.Attributes.Add(“bgcolor”, “Yellow”);
                    break;
                }
                rowCnt++;
            }
        }
    }

Я использую rowdatabound событие, чтобы найти строку, которая была отредактирована, и затем назначить класс начальной загрузки css этой строке следующим образом:

e.Row.CssClass = "danger";
Другие вопросы по тегам