2009-03-20 11 views
2

行の色が交互に変わるGridviewがあり、その行のどこかをクリックするとその行が強調表示されます。残念なことに、私が見つけたコードでは、以前にクリックされた行に暗い色合いが適用されます。たとえば、4行目のグリッドビューのうち、2と4がシルバーで、他の2つが白です。行1をクリックしてから行4をクリックすると、行1は現在陰影付けされています。他の行をクリックした場合も同様です。ここに私のコードです:色付きの行を交互に表示する全体的な行を選択する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> 

助けていただければ幸いです。ありがとう。

また、どのような行がサーバ側で強調表示されているのかを知る手助けができますか?選択と同様。

+0

ここでどのような環境(Java、Delphi、javascript、??)を追加する必要があります。私はちょうどあなたの質問をretagged。 –

+0

HilightRow JavaScript関数のコードを投稿できますか? –

答えて

0

私は、主キーを知っていると仮定して、選択した行を見つける方法を助けることができます。 RowDataBoundイベントでは、DataItem(実際の型にキャスト)を取得し、探している値と比較してから強調表示できます。私はこの作業をするために交替するWordSTyleをオフにしなければならなかった。それについて多くは知らない。

protected void Page_Load(オブジェクト送信者、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; 
       } 
      } 
     } 
    } 
関連する問題