2010-08-11 6 views
0

Je souhaite masquer quelques colonnes d'une grille avant qu'elles ne soient affichées. Je veux le faire en créant une fonction commune qui peut être utilisée par plusieurs contrôles. J'utilise une extension et j'aimerais savoir comment cela peut être fait.Comment utiliser ColumnName dans le contrôle GridView pour masquer certaines colonnes

Voici mon code

protected void btnStandardView_Click(object sender, EventArgs e) 
{ 
    _viewTypeDl = new ViewTypeDL(); 
    DataTable dt = _viewTypeDl.GetStandardView(); 
    gvViewType.Source(_viewTypeDl.GetStandardView(),"ColorCode"); 
    ViewState["request"] = "Standard View"; 
} 

public static void Source(this CompositeDataBoundControl ctrl, DataTable dt, params string[] ColumnsToHide) 
{ 
    ctrl.DataSource = dt; 
    ctrl.DataBound += new GridViewRowEventHandler(ctrl_DataBound); 

    ctrl.DataBind(); 
} 

static void ctrl_DataBound(object sender, GridViewRowEventArgs e) 
{ 
    e.Row.Cells["ColorCode"].Visible = false; 

} 

Je veux créer une extension pour cacher ou afficher les colonnes figurant dans la liste comme un tableau. La première fonction est utilisée à la page. Alors que deux fonctions doivent être utilisées pour plusieurs applications

Répondre

1

Vous pouvez répondre à vos besoins de deux manières.

  1. set gvViewType.Columns [i] .visble = false;

  2. Autoriser css pour gérer les colonnes cachées pour vous.

    .hidden 
    { 
        display:none; 
    } 
    .visble 
    { 
        display:block; 
    } 
    

// C'est l'événement Gridview.

protected void OnRowCreated(object sender, GridViewRowEventArgs e) 
{ 
    if (e.Row.RowType == DataControlRowType.DataRow) 
    { 
     //Cells Represent the Column 
     e.Row.Cells[0].CssClass = "hidden"; 
    } 
    else if (e.Row.RowType == DataControlRowType.Header) 
    { 
     e.Row.Cells[0].CssClass = "hidden"; 
    } 
}