2016-07-26 19 views
0

私はグリッドビューを使用して、それが私のGridViewの実行時にgridview行の色を変更する方法は?

<asp:GridView ID="grdUser" runat="server" AllowPaging="True" AllowSorting="True" CaptionAlign="Left" OnPageIndexChanging="grdUser_PageIndexChanging" OnSorting="grdUser_Sorting" PageSize="5" CssClass="table table-hover table-striped table-responsive" DataKeyNames="Email"> 
     <AlternatingRowStyle BackColor="#CCCCFF" /> 
     <HeaderStyle BackColor="#009933" Font-Bold="True" Font-Size="Medium" HorizontalAlign="Center" VerticalAlign="Middle" /> 
     <PagerSettings FirstPageText="First" Mode="NumericFirstLast" LastPageText="Last" PageButtonCount="4" NextPageText="" /> 
     <PagerStyle BackColor="#CC66FF" HorizontalAlign="Right" VerticalAlign="Middle" ForeColor="Black" /> 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <asp:DropDownList ID="ddlAct" runat="server" OnSelectedIndexChanged="ddlAct_SelectedIndexChanged" AutoPostBack="true"> 
         <asp:ListItem Value="Action" Text="imtiaz" >Action</asp:ListItem> 
         <asp:ListItem Value="Activate" Text="imtiaz">Activate</asp:ListItem> 
         <asp:ListItem Value="Block" Text="imtiaz">Block</asp:ListItem> 
         <asp:ListItem Value="Delete" Text="imtiaz">Delete</asp:ListItem> 
        </asp:DropDownList> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 

は、今私が選択した行の色をアクティブにクリックし

私を変更しなければならない条件があるドロップダウンリストに

を使用してイム内側にしていますコードは

protected void ddlAct_SelectedIndexChanged(object sender, EventArgs e) 
{ 

    using (SqlConnection con = new SqlConnection(CS)) 
    { 
     DropDownList ddlAct = (DropDownList)sender; 
     GridViewRow row = (GridViewRow)ddlAct.Parent.Parent; 
     int idx = row.RowIndex; 
     string Email = grdUser.DataKeys[idx]["Email"].ToString(); 

     //string Email = ((Label)row.Cells[0].FindControl("Email")).Text; 
     DropDownList ddl = (DropDownList)row.Cells[0].FindControl("ddlAct"); 
     var ddlvalue = ""; 

     if (ddl.Text.ToString() == "Activate") 
     { 
      ddlvalue = "Approved"; 

     } 
     else if (ddl.Text.ToString() == "Block") 
     { 
      ddlvalue = "Blocked"; 
     } 
     else 
     { 
      ddlvalue = ddl.Text.ToString(); 
     } 
     string query = "Update Users set Status ='" + ddlvalue + "' where E_Mail='" + Email + "'"; 



     SqlCommand cmd = new SqlCommand(query, con); 
     con.Open(); 
     cmd.ExecuteNonQuery(); 
     GetDataTable(); 

     lblMsg.Visible = true; 
     lblMsg.ForeColor = Color.Red; 
     lblMsg.Text = "Status is : Account is " + ddl.Text.ToString(); 
    } 
} 

です。選択したインデックス内の色のみを変更する必要があります。

+0

マイナーが向上しました。 'row.Cells [0] .FindControl(" ddlAct ")'の代わりに 'ddlAct.Parent.Parent'と' row.FindControl( "ddlAct") 'の代わりに' ddlAct.NamingContainer'を使用してください。 –

+0

問題によると、それは明確ではありません。 'row.BackColor = whatevercolor' –

+0

' grdUser.SelectedRow.BackColor = System.Drawing.Color.Aqua; 'を試しましたか? –

答えて

0

を助けてください、私は

Public Sub MyGridView_RowDataBound(sender As Object, e As GridViewRowEventArgs) Handles GridView1.RowDataBound 
    If e.Row.RowType = DataControlRowType.DataRow Then 
     Dim checkCell As String = DirectCast(e.Row.FindControl("Label11"), Label).Text 
     If checkCell = 0 Then 
      e.Row.Cells(11).BackColor = Drawing.Color.Green 
      e.Row.Cells(11).ForeColor = Drawing.Color.White 
     ElseIf checkCell > 0 And checkCell < 11 Then 
      e.Row.Cells(11).BackColor = Drawing.Color.Yellow 
     ElseIf checkCell > 10 Then 
      e.Row.Cells(11).BackColor = Drawing.Color.Red 
      e.Row.Cells(11).ForeColor = Drawing.Color.White 
     End If 
    End If 
End Sub 

複数のプロジェクトのためにこれを行っているにFindControl(「Label11」)は、aspxページに私のデータバインドされたオブジェクトを指します。 e.row.cells(11)はハイライトしたい列番号です。これらの値を変更して任意の列を選択するか、コントロールを見つけることができます。これはdatabindでも呼び出されるので、行の色を更新するためにはdatabindが必要です。

関連する問題