我想突出显示网格视图中最后插入的记录。在我的网格视图中,我有一个主键列。新插入的行按照该主键的升序排列。现在我想突出显示最后插入的行。从我写的这样的搜索,但它显示突出显示的网格视图的最后一行,而不是新插入的行。请帮忙。我的代码在这里,
int lastRowIndex = 0;
if(!IspostBack)
{
string select_string="SELECT student_name,student_id,student_nric,student_group FROM student_details WHERE student_group='"+groups[0].ToString().Trim()+"' ";
for(int i=1;i<groups.Count;i++)
{
select_string+= " or student_group='"+groups[i].ToString().Trim()+"'";
}
if(Session["STUDENT_ID"]!=null)
{
for(int i=0;i<student_id_list.Count;i++)
{
select_string+= " or student_id='"+student_id_list[i].ToString().Trim()+"'";
}
}
SqlDataAdapter adapter = new SqlDataAdapter(select_string, con);
adapter.Fill(ds);
GridView2.DataSource = ds;
GridView2.DataBind();
con.Close();
foreach (GridViewRow grv in GridView2.Rows)
{
if (grv.RowType == DataControlRowType.DataRow)
{
if (grv.RowIndex > lastRowIndex)
{
lastRowIndex = grv.RowIndex;
}
}
}
lastRowIndex = GridView2.Rows.Count - 1;
GridView2.Rows[lastRowIndex].BackColor = System.Drawing.Color.LightGoldenrodYellow;
}
}
}
答案 0 :(得分:1)
我认为你的问题在这里:
lastRowIndex = GridView2.Rows.Count - 1;
你总是将lastRowIndex设置为同一个...
您可以使用RowsAdded事件:
private void grv_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
// the new row = e.RowIndex
}
答案 1 :(得分:0)
您可以执行几种解决方案 第一个是创建一个变量,该变量可以在不同的视图状态下访问,例如:
private bool AddedSuccesfuly
{
get
{
return (bool)ViewState["flag"];
}
set
{
ViewState["flag"] = value;
}
}
下一次页面加载时,由于尚未插入任何行,因此将其值添加为false 然后在insertRow的按钮click事件上,将其值设置为true 而在datarowbound方法或绑定方法上,是否在这样的ifmanmant上确实很重要:
if (AddedSuccesfuly == true)
{
gridviewname.Rows[gridviewname.Rows.Count1].BackColorSystem.Drawing.Color.Beige;
}
我还建议您将主键设置为身份或等效的自动增量,并且不要在gridview中显示它,因为不需要学生查看其ID。