string m_kategoriAd = String.Empty; protected void GridViewAnaSayfa_RowDataBound(object sender, GridViewRowEventArgs e) { //GridViewRow biligisi alınır GridViewRow gvr = e.Row; //Şayet satır veri satırı ise işlem yap if (gvr.RowType == DataControlRowType.DataRow) { //Veritabından veri almak için DataRowView tanımlanır. DataRowView drv = gvr.DataItem as DataRowView; //Eğer veritannından alınan bilgi “AnaKategoriAd” ise bu sütündaki değeri kategoriAd stringine ata. string kategoriAd = drv["AnaKategoriAd"].ToString(); //Okunan kategoriAd bilgisi daha önceden kullanılmış mı kontrol edilir. Eğer daha onceden bu veri için bir işlem yapılmamıs ise if bloguna girilir ve yeni satır oluşturulur. if (!kategoriAd.Equals(m_kategoriAd)) { //Yenibir GridViewRow oluşturulur. Oluşturulan satırın tipi header(başlık) tır. GridViewRow row = new GridViewRow(0, -1, DataControlRowType.Header, DataControlRowState.Normal); //Yeni bir hücre oluşturulur TableCell cell = new TableCell(); //GridView’a ait sutun sayısı columnspan değerine atanır. Böylelikle sütünların arasında bulunan çizgiler gözükmeyecektir. cell.ColumnSpan = GridViewAnaSayfa.Columns.Count; //Hücreye eklenen bilgiyi sola daya. cell.HorizontalAlign = HorizontalAlign.Left; //Hücereye metin olarak katagoriAd stringi atanır cell.Text = String.Format("{0}", kategoriAd); //Oluşturulan hücre satıra eklenir. row.Cells.Add(cell); //Oluşturulan hücre gridviewe eklenir GridViewAnaSayfa.Controls[0].Controls.AddAt(GridViewAnaSayfa.Controls[0].Controls.Count - 1, row); //oluşturulmus kategoriAd bilgisi m_kategorisAd stringine atanıp bir daha işlem yapılmaması sağlanır m_kategoriAd = kategoriAd; } } } Sonuç aşağıdaki gibi olacaktır:
String baslik= Request.QueryString["CategoryId"]; protected void GridViewCategory_RowDataBound(object sender, GridViewRowEventArgs e) { //Row bilgisi alınır GridViewRow gvr = e.Row; //Satırı Header ise işlem yap. if (gvr.RowType == DataControlRowType.Header) { //Yeni bir başlık satırı oluşturulur. GridViewRow rowHeader = new GridViewRow(0, 0,DataControlRowType.Header, DataControlRowState.Normal); //Literal kontrolü oluşturulur Literal newCells = new Literal(); //Başlık bilginizi bu kontrolün metin bilgisine aktarılır newCells.Text = baslik; //Yeni bit başık hücresi oluşturulur TableHeaderCell headerCell = new TableHeaderCell(); //Literal kontrolü hücreye eklenir. headerCell.Controls.Add(newCells); //GridView sütun sayısı hesaplanır ve hücrenin columnspan değerine atanır. headerCell.ColumnSpan = GridViewCategory.Columns.Count; //Oluşturulan hücre GridviewRow a eklenir rowHeader.Cells.Add(headerCell); rowHeader.Visible = true; //Yeni oluşturulan hücre GridView e eklenir. GridViewCategory.Controls[0].Controls.AddAt(0, rowHeader); } } Sonuç aşağıdaki gibi olacaktır: