Şimdi Ara

Asp.net ile dinamik gridview oluşturma

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
22
Cevap
0
Favori
4.492
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 12
Sayfaya Git
Git
sonraki
Giriş
Mesaj
  • Merhaba arkadaşlar ben asp.net ile dinamik bir gridview oluşturmak istiyorum fakat kolonları dinamik olarak oluşturamıyorum,kısaca kodlarımdan b ahsedecek olursam;
    formda bir listbox var kullanıcı bu listbox'a textbox aracılığıyla veri yüklemekte,daha sonra başka bir butona basıldığında dinamik bir gridview oluşacak ve kolon isimlerini bu listbox a eklenen verilerden alacak,yardım eden arkadaşlar için şimdiden teşekkür ederim.



  • Biraz daha açık olursan yardımcı olmaya çalışırız arkadaşım
    Paragraf falan kullan, okunmuyor, anlaşılmıyor yazın..
  • Peki biraz daha açık olayım :) ve yardım etmek istediğin için teşekkür ederim.

    Şimdi formda dinamik bir gridview oluşturmak istiyorum.Yapmaya çalıştığım şeyi şöyle özetleyim

    1.) Formda bitane listbox kullanıyorum.

    2.) Bu listbox içine verileri kullanıcı girmekte.

    3.) Ve kullanıcıyı yönlendiren bir buton var.

    4.) Bu butona tıklanıldığı zaman listboxda ki veriler alınacak,

    5.) Dinamik bir gridview oluşturulacak,

    6.) Ve dinamik oluşturulan bu gridview in kolon isimleri listbox dan alınan veriler olacak, ki takıldığım nokta da bu
    dinamik bir gridview i oluşturmakta sorun yok orası tamam ama kolon isimlerini ayarlama konusunda takılıyorum, bu noktada yardım ederseniz çok sevinirim, teşekkürler.
  • Hayır veritabanından gelmeyecek, eğer veritabanından gelecek olursa o zaman kolon isimlerini zaten veritabanındaki ile aynı istiyor,bilgileri ben gireceğim.

    Mesela kayıt sistemi gibi bir olay (amacım bu değil), 2-3 kolona textbox lar yerleştireceğim dinamik olarak sonra bir kolonda onay kolonu olacak ve o kolon boyunca tüm satırlarda kayıt butonu olacak,bu şu an aklıma gelen senaryo amaç her şeyi dinamik bir şekilde oluşturmak.

    Hocam ben kolonları kendim oluşturdum,şimdi satırlara istediğim dinamik kontrolleri yerleştirmede,eğer bakmak isteyen olursa kolon oluşturmanın kodlarını buradan bilgilerinize ulaştırabilirim. İlgilenenler için teşekkür ederim.
  • Eyvallah hocam teşekkürler bende tam yapmıştım kendim :)
  • Rapid linkine bakamadımda orada sorulan soru benimkisinden biraz daha farklı ben şu an için veritabanıyla ilgilenmiyorum, oradaki sorun veritabanına kayıt eklemeyle ilgili anladığım kadarıyla, ama benim işim sadece dinamik kontrol eklemek, nasıl olduğunu nasıl yapıldığını kavrayabilmek, ilgilendiğin için çok teşekkür ederim .
  • protected void Page_Load(object sender, EventArgs e)
    {

    GridView Grid = new GridView();
    DataTable Table = new DataTable();
    Grid.RowCreated += new GridViewRowEventHandler(Grid_RowCreated);
    DataColumn DataColumns1 = new DataColumn("Kolon1", typeof(System.Int32));
    Table.Columns.Add(DataColumns1);
    DataRow DataRows = Table.NewRow();
    DataRows["Kolon1"] = 300;
    Table.Rows.Add(DataRows);
    Grid.DataSource = Table;
    TemplateField Field = new TemplateField();
    Field.HeaderText = "Özel Kolon";
    Grid.Columns.Add(Field);
    Grid.DataBind();
    Page.Form.Controls.Add(Grid);
    }

    void Grid_RowCreated(object sender, GridViewRowEventArgs e)
    {
    if (e.Row.RowIndex != -1)
    {
    DropDownList Ctr = new DropDownList();
    Ctr.Items.Add("Hımm Güzel Olmuş!");
    e.Row.Cells[0].Controls.Add(Ctr);
    e.Row.Cells[1].BackColor = System.Drawing.Color.Azure;
    //Bu şekilde Her Türlü Değişimi Yapabilirsiniz.
    }

    }




  • Yapay Zeka’dan İlgili Konular
    Css ile buton sıralama
    8 yıl önce açıldı
    Daha Fazla Göster
  • Ellerine sağlık hocam teşekkürler çok faydalı bir örnek oldu...
  • Birden fazla kontrol eklemek istediğim zxaman sorun yaşamaktayım

    Ben olayı döngüye sokup her satıra bu kontrolü eklemek istedim ama kullanamadım.

    Grid.RowCreated += new GridViewRowEventHandler(Grid_RowCreated);

    Bu olayı tam anlayamadım,bu olay void Grid_RowCreated(object sender, GridViewRowEventArgs e) çağırıyor ama tam olarak nasıl çalıştığını anlayamadım bu yüzden istediğim kontrolleri ekleyemiyorum.

    Her satır için ayrı ayrı çalıştıramadım, ben bir döngü içinde yeni bir satır oluşturuyorum ve döngü içinde yeni bir satır oluşturup tabloya ekledikten sonra, Grid.RowCreated += new GridViewRowEventHandler(Grid_RowCreated); çağırıyorum ama sonuç karmaşık bir hal alıyor kafam karıştı :S

    Bu noktada yardım ederseniz çok sevinirim, teşekkürler..
  • O zaman siz bana olmasını istediğiniz gibi static bir grid view oluştup resimini yollayın. Ona göre bir yol izleyelim.



    < Bu mesaj bu kişi tarafından değiştirildi nezuk -- 25 Haziran 2011; 14:50:07 >
  • GridViewRowEventHandler(Grid_RowCreated); bu fonksiyonu döngü dışında bir kere kullanmam gerekiyormuş, şu anda yapmak istediğim şeyi söyleyeyim kullanıcıdan aldığım bilgileri kolon ismi olarak oluşturacağım.

    Bu kolonların altındaki satırlarda textboxlar koyacağım,

    Ayriyetten bende grid e bir kolon ekleyeceğim ve bu kolon altındaki satırlardada buton oluşturacağım.

    Hangi butona tıklanılırsa o satırdaki textboxlar içindeki bilgileri alacağım, şu an yapmaya çalıştığım şey bu hocam, yardımlarınız için çok teşekkür ederim.
  • Bide şu sorunu çözemedim, Datatable ile tanımlanan sütun altına herhangi bir kontrol ekleyemiyorum,

    TemlateField field = new TemplateField(); bu şekilde grid içinde oluşturduğum field altına kontrol ekleyebiliyorum ancak.
  • quote:

    using System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;
    using System.Collections;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;

    public partial class _Default : System.Web.UI.Page
    {
    protected void Page_Load(object sender, EventArgs e)
    {
    LoadGrid();
    }

    private void LoadGrid()
    {
    HtmlForm HtmForm = new HtmlForm();
    GridView Grid = new GridView();
    DataTable Table = new DataTable();
    Grid.AutoGenerateColumns = false;
    for (int i = 1; i < 6; i++)
    {
    DataColumn Temp_Column = new DataColumn("Kolon" + i.ToString(), typeof(System.String));
    Table.Columns.Add(Temp_Column);
    }
    for (int nIndex = 0; nIndex < 10; nIndex++)
    {
    DataRow Row = Table.NewRow();
    Row[0] = "K1&S" + nIndex.ToString();
    Row[1] = "K2&S" + nIndex.ToString();
    Row[2] = "K3&S" + nIndex.ToString();
    Row[3] = "K4&S" + nIndex.ToString();
    Row[4] = "Güncelle";
    Table.Rows.Add(Row);
    }
    for (int i = 0; i < Table.Columns.Count; i++)
    {
    TemplateField Filed = new TemplateField();
    Filed.HeaderText = Table.Columns [ i ] .ColumnName;
    Filed.ItemTemplate = new GridViewTemplate(ListItemType.Item, Table.Columns [ i ] .ColumnName, i);
    Grid.Columns.Add(Filed);
    }
    Grid.DataSource = Table;
    Grid.DataBind();
    HtmForm.Controls.Add(Grid);
    Page.Controls.Add(HtmForm);
    }
    }
    public class GridViewTemplate : ITemplate
    {
    ListItemType Type;
    string Name;
    int CellIndex = 0;

    public GridViewTemplate(ListItemType Type, string Name,int Index)
    {
    this.Type = Type; this.Name = Name; this.CellIndex = Index;
    }

    void ITemplate.InstantiateIn(System.Web.UI.Control container)
    {
    if (CellIndex >= 1 && CellIndex < 4)
    {
    switch (Type)
    {
    case ListItemType.Header:
    Label Lbl = new Label();
    Lbl.Text = Name;
    container.Controls.Add(new Label());
    break;

    case ListItemType.Item:
    TextBox Box = new TextBox();
    Box.DataBinding += new EventHandler(DataBinding);
    Box.Columns = 4;
    container.Controls.Add(Box);

    break;
    }
    }
    else if (CellIndex == 4)
    {
    switch (Type)
    {
    case ListItemType.Header:
    Label Lbl = new Label();
    Lbl.Text = Name;
    container.Controls.Add(new Label());
    break;

    case ListItemType.Item:
    Button Btn = new Button();
    Btn.DataBinding += new EventHandler(DataBinding);
    container.Controls.Add(Btn);

    break;
    }
    }
    else
    {
    switch (Type)
    {
    case ListItemType.Header:
    Label Lbl = new Label();
    Lbl.Text = Name;
    container.Controls.Add(new Label());
    break;

    case ListItemType.Item:
    Lbl = new Label();
    Lbl.DataBinding += new EventHandler(DataBinding);
    container.Controls.Add(Lbl);
    break;
    }
    }

    }

    void DataBinding(object sender, EventArgs e)
    {
    if (sender.ToString() == "System.Web.UI.WebControls.Label")
    {
    Label txtdata = (Label)sender;
    GridViewRow container = (GridViewRow)txtdata.NamingContainer;
    object dataValue = DataBinder.Eval(container.DataItem, Name);
    if (dataValue != DBNull.Value)
    {
    txtdata.Text = dataValue.ToString();
    }
    }
    else if (sender.ToString() == "System.Web.UI.WebControls.Button")
    {
    Button txtdata = (Button)sender;
    GridViewRow container = (GridViewRow)txtdata.NamingContainer;
    object dataValue = DataBinder.Eval(container.DataItem, Name);
    if (dataValue != DBNull.Value)
    {
    txtdata.Text = dataValue.ToString();
    txtdata.Attributes.Add("onclick", "alert('Benim Satırım " + container.RowIndex + "');");
    }
    }
    else if (sender.ToString() == "System.Web.UI.WebControls.TextBox")
    {
    TextBox txtdata = (TextBox)sender;
    GridViewRow container = (GridViewRow)txtdata.NamingContainer;
    object dataValue = DataBinder.Eval(container.DataItem, Name);
    if (dataValue != DBNull.Value)
    {
    txtdata.Text = dataValue.ToString();
    }
    }
    }
    }



    < Bu mesaj bu kişi tarafından değiştirildi nezuk -- 27 Haziran 2011; 17:19:25 >




  • Teşekkür ederim, kodları anlamaya çalışıyorum şimdi.

    Web programlamaya ve asp ye yeni başlıyorum o yüzden nasıl kolay olur pek bilmiyorum ama yapmaya çalıştığım şey biraz zormuş :D
  • Table.Columns.ColumnName burada hata alıyorum,

    Table.Columns'dan sonra ColumnName özelliği çıkmıyor, açıklarsanız sevinirim
  • Yazdığınız kod bloğunu aynen aldım zaten ama dediğim kısımda hata veriyor orayı tanımıyor.
  • Üstteki çıkmayan yerleri ekledim şimdi hatasız kullanabilirsiniz.



    < Bu mesaj bu kişi tarafından değiştirildi nezuk -- 27 Haziran 2011; 12:51:10 >
  • İlgilendiğiniz için çok teşekkür ederim çok sağolun
  • Hocam gerçekten çok teşekkür ederim, şu anda benim şöyle bir sorunum var gridview içinde oluşturduğum dinamik bir butonun click olayında gerçekleşecek olayları sayfa refresh olduğu için gözlemleyemiyorum.

    Bide şöyle bir durum söz konusu sayfa içerisinde herhangi bir butona tıklanıldığında dinamik olduğu için gridimi kaybetmekteyim, grid i kaybetmemek adına ne yapabilirim ? Çok mu oluyorum bilmiyorum ama bu konudada yardım ederseniz sevinirim :)
  • Buradan İndirin Bu örneği sizin için hazırladım umarım faydalı olur.



    < Bu mesaj bu kişi tarafından değiştirildi nezuk -- 27 Haziran 2011; 17:26:02 >
  • 
Sayfa: 12
Sayfaya Git
Git
sonraki
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.