Şimdi Ara

C#. ado.net, asp.net kategori sorunu acil yardım

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
2
Cevap
0
Favori
775
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • arkadaşlar merhaba
    ben e-ticaret sitesi yapıyorum.ama kategori kısmında sorunum var.şimdi treeview ile sınırsız kategori yaptım.verileri yazdırdım.kategiler çok güzel görünüyor.sayfa yoluna da index.aspx?catID=bilgisayar gibi uzantıyı da alıyorum.sorunum ise burada ballıyor.ben kategori adı yerine id almak istiyorum.bunu nasıl alabilirim.seçtiğim kategorinin id sini yakalayıp o id ile bağlı dataliste veri alıcam.
    yardımcı olursanız sevinirim..

     
    string veri;
    DataTable dt = new DataTable();
    protected void Page_Load(object sender, EventArgs e)
    {
    SqlConnection conn = new SqlConnection("connectionstring");
    SqlDataAdapter da = new SqlDataAdapter("select * from Kategoriler", conn);

    da.Fill(dt);
    kategori(TreeView1.Nodes[0],getrows("0"));
    //ürünler kısmı
    DataSet ds = new DataSet();
    da.Fill(ds, "datst");
    SqlCommand com = new SqlCommand("select * from urunler",conn);
    conn.Open();
    SqlDataReader rd = com.ExecuteReader();
    DataList1.DataSource = rd;
    DataList1.DataBind();



    }
    DataRowCollection getrows(string id)
    {
    DataView dw = new DataView(dt);
    dw.RowFilter = "AltKategoriID="+id;
    return dw.ToTable().Rows;
    }


    void kategori(TreeNode node, DataRowCollection col)
    {
    foreach (DataRow row in col)
    {
    TreeNode tn = new TreeNode(row[1].ToString());
    node.ChildNodes.Add(tn);
    kategori(tn, getrows(row[0].ToString()));
    tn.NavigateUrl = "Default.aspx?CatID=" + tn.Text;

    }
    }
    protected void TreeView1_SelectedNodeChanged(object sender, EventArgs e)
    {


    }







  • Merhabalar,
    Kodu inceledim biraz.
    Aslında çözümün çok basit hatta kendin de zaten açıklamışsın.

    Anladığım kadarıyla querystring ile kategoriyi yakalıyorsun.
    Burada yapman gereken TreeNode oluştururken Text ve Value vermen. Yani Kategori Adını ve ID sini vermen.

     
    void kategori(TreeNode node, DataRowCollection col)
    {
    foreach (DataRow row in col)
    {
    // burada TreeNode oluştururken sadece text vermişsin
    // eski kod
    //TreeNode tn = new TreeNode(row[1].ToString());
    //Yeni Kod
    TreeNode tn = new TreeNode(row[1].ToString(),row[x].ToString());
    // burada row[x] kısmına KategoriID nin denk geldiği index i vereceksin. Burada bir tavsiyem index olarak verme bu kısımlar. Kolon Adı ile de verebiliyorsun yani row["ID"], row["Adi"] şeklinde. Bunu tavsiye etme sebebim ileride yeni bir kolon eklersen bu tablona. bu indexleri değiştirmen gerekebilir. yani işini uzatır bu da.

    node.ChildNodes.Add(tn);
    kategori(tn, getrows(row[0].ToString()));

    //sonra navigate url kısmına da node a verdiğin text değil de value kısmını verdiğin zaman artık querystring de ID ni göndermiş olacaksın.
    //eski kod
    //tn.NavigateUrl = "Default.aspx?CatID=" + tn.Text;
    //yeni kod
    //tn.NavigateUrl = "Default.aspx?CatID=" + tn.Value;
    }
    }


    Umarım yardımı dokunur.

    Kolay gelsin.




  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.