Выделите последнюю вставленную строку 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";