我有一个具有交替行颜色的Gridview,并希望在单击该行的任何位置时突出显示一行。不幸的是,我发现并使用的代码将较暗的色调应用于之前单击的行。例如,如果在4行gridview中,2和4是阴影银,而另外2是白色。如果我点击第1行,然后点击第4行,第1行现在是阴影银。如果我点击任何其他行也会发生这种情况。这是我的代码:
protected void CCAGridView_OnRowCreated(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
e.Row.Attributes.Add("onclick", "HilightRow(this)");
}
<asp:GridView ID="GridView" runat="server" HeaderStyle-Width="200" HeaderStyle-BackColor="#2B6292" HeaderStyle-ForeColor="White"
AllowSorting="true" AllowPaging="true" Width="600" AutoGenerateColumns="False" OnRowCreated="GridView_OnRowCreated"
DataKeyNames="Id" AlternatingRowStyle-BackColor="Silver" BorderColor="#2B6292" BorderWidth="1" BorderStyle="solid">
<Columns>
...
</Columns>
</asp:GridView>
任何帮助将不胜感激。感谢。
此外,是否有人能够帮助我找到突出显示哪一行,服务器端?像选择一样。
答案 0 :(得分:0)
好吧,假设您知道主键,我可以帮助您找到所选行。在RowDataBound事件中,您可以获取DataItem(将其转换为实际类型),然后将其与您要查找的值进行比较(然后突出显示)。我不得不关闭alternatingRowSTyle来完成这项工作。对此不太了解。
protected void Page_Load(object sender,EventArgs e) { GridViewCompany.AlternatingRowStyle.Reset(); GridViewCompany.SelectedRowStyle.Reset(); }
protected void GridViewCompany_RowDataBound(object sender, GridViewRowEventArgs e)
{
int selectedCompanId = Convert.ToInt32(StateService.I.Get(CookieIdType.CompanySelected));
if (e.Row.RowType == DataControlRowType.DataRow)
{
var userResult = e.Row.DataItem as CompanyResult;
if (userResult != null)
{
if (userResult.Id == selectedCompanId)
{
e.Row.BackColor = Color.LightGray;
}
}
}
}