2009-03-20 13 views
2

Ich habe eine Gridview mit alternierenden Zeilenfarben und möchte eine Zeile hervorheben, wenn irgendwo in dieser Zeile geklickt wird. Leider verwendet der Code, den ich gefunden habe und verwende, den dunkleren Farbton für die zuvor angeklickte Zeile. Zum Beispiel, wenn aus einer 4-reihigen Gitteransicht 2 und 4 silbern schattiert sind, während die anderen 2 weiß sind. Wenn ich auf Zeile 1 klicke, dann klicke auf Zeile 4, Zeile 1 ist nun silbern schattiert. Dies passiert auch, wenn ich auf eine andere Zeile klicke. Hier ist mein Code:Auswählen der ganzen Zeile in alternierenden farbigen Zeilen gridview

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> 

Jede Hilfe wäre willkommen. Vielen Dank.

Würde mir auch jemand helfen, herauszufinden, welche Zeile hervorgehoben ist, Server-Seite? Wie eine Auswahl.

+0

Sie sollten hinzufügen, in welcher Umgebung Sie hier sprechen (java, delphi, Javascript, ??). Ich habe gerade deine Frage neu geschrieben. –

+0

könnten Sie bitte den Code für die HilighRow JavaScript-Funktion posten? –

Antwort

0

Nun, ich kann helfen, wie Sie die ausgewählte Zeile finden, vorausgesetzt, Sie kennen den Primärschlüssel. In Ihrem RowDataBound-Ereignis können Sie das DataItem abrufen (in den echten Typ umwandeln) und es dann mit dem Wert vergleichen, nach dem Sie suchen (und dann hervorheben). Ich musste den alternierenden RowSTyle ausschalten, damit das funktioniert. Ich weiß nicht viel darüber.

geschützte Leere Page_Load (Objekt Absender, 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; 
       } 
      } 
     } 
    }