none
kategorilendirmede bir sorun... RRS feed

  • Soru

  • burda bir sorunumuz var şimdi farkettim (biraz geç oldu ama :D)

    bakın kategorilere, o kategoriye ait ürünler gelmiyor...onu nasıl sağlarım?

    gördüğünüz gibi bütün ürünler o kategorilerin altına geliyor...where sorgularını denedim işe yaramadı şaşırdım doğrusu... :(

    protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                FillCats();
            }
        }
    
        void FillCats()
        {
            conn = new SqlConnection(conStr);
            string query = "SELECT * FROM Cats";
            cmd = new SqlCommand(query, conn);
    
            try
            {
                conn.Open();
                reader = cmd.ExecuteReader();
                rptCat.DataSource = reader;
                rptCat.DataBind();
            }
            catch (Exception ex)
            {
                lblW.ForeColor = Color.Red;
                lblW.Text = "Bir hata oluştu!<br/>" + ex.Message;
            }
            finally
            {
                conn.Close();
            }
        }
    
        protected void rptCat_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            Repeater rpt = (Repeater)e.Item.FindControl("rptMenu");
            string cateid = Request.QueryString["catid"];
            conn = new SqlConnection(conStr);
            string query = "select * from Menu where CatID=@CatID";
            cmd = new SqlCommand(query, conn);
    
            try
            {
                conn.Open();
                reader = cmd.ExecuteReader();
                rpt.DataSource = reader;
                rpt.DataBind();
            }
            catch (Exception ex)
            {
                lblW.ForeColor = Color.Red;
                lblW.Text = "Bir hata oluştu!<br/>" + ex.Message;
            }
            finally
            {
                conn.Close();
            }
        }

    where sorgusunda şu hatayı veriyor;

    Bir hata oluştu!
    Must declare the scalar variable "@CatID".



    Ms. Destiny - Lies/Bout Me (Sexy Body Paint Video)

    Scope Piskopos - Ben 46 Raporlu Bir Deliyim

    Ben başarısız olmadım, sadece işin bu şekilde yapılmayacağının bir çok yolunu buldum ve işin nasıl yapılacağına da bir çok defa yaklaştım.

    24 Nisan 2013 Çarşamba 19:33

Yanıtlar

  • string cateid = DataBinder.Eval(e.Item.DataItem,"Id").ToString();

    Son olarak bu sekilde dener misiniz, baska herhangi bir yerde sorun olabilecek bir sey gozukmuyor.
    • Yanıt Olarak İşaretleyen 232323232323 24 Nisan 2013 Çarşamba 22:01
    24 Nisan 2013 Çarşamba 21:47

Tüm Yanıtlar

  •         Repeater rpt = (Repeater)e.Item.FindControl("rptMenu");
            string cateid = Request.QueryString["catid"];
            conn = new SqlConnection(conStr);
            string query = "select * from Menu where CatID=@CatID";
            cmd = new SqlCommand(query, conn);
            cmd.Parameters.Add("@CatID", System.Data.SqlDbType.Int).Value = cateid;

    Parametreyi eklemeyi unutmussunuz gibi?
    24 Nisan 2013 Çarşamba 19:39
  • ekledim ancak aldığım hata şu:

    The parameterized query '(@CatID int)select * from Menu where CatID=@CatID' expects the parameter '@CatID', which was not supplied.


    Ms. Destiny - Lies/Bout Me (Sexy Body Paint Video)

    Scope Piskopos - Ben 46 Raporlu Bir Deliyim

    Ben başarısız olmadım, sadece işin bu şekilde yapılmayacağının bir çok yolunu buldum ve işin nasıl yapılacağına da bir çok defa yaklaştım.


    24 Nisan 2013 Çarşamba 20:21
  • Az evvel gozumden kacmis, "string cateid = Request.QueryString["catid"];" olmamali. Burayi su sekilde degistirir misiniz;

    string cateid = DataBinder.Eval(e.Item.DataItem,"Id"); // Kategori tablonuzun ID'si.

    24 Nisan 2013 Çarşamba 20:52
  • altını çiziyor onu kabul etmiyor... bu arada kategori tablom ayrı Menu tablomda var CatID, Cats (yani kategoriler tablom) ayrı doluyor...

    Ms. Destiny - Lies/Bout Me (Sexy Body Paint Video)

    Scope Piskopos - Ben 46 Raporlu Bir Deliyim

    Ben başarısız olmadım, sadece işin bu şekilde yapılmayacağının bir çok yolunu buldum ve işin nasıl yapılacağına da bir çok defa yaklaştım.

    24 Nisan 2013 Çarşamba 21:12
  • Biraz daha detaylandirir misiniz? Ekran goruntusu olabilir, hatayi alirken kullandiginiz kodlar ve tablo yapisi olabilir?
    24 Nisan 2013 Çarşamba 21:18
  • bütün kodlar bu;

     SqlConnection conn;
        SqlCommand cmd;
        SqlDataReader reader;
        string conStr = ConfigurationManager.ConnectionStrings["CS"].ToString();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                FillCats();
            }
        }
    
        void FillCats()
        {
            conn = new SqlConnection(conStr);
            string query = "SELECT * FROM Cats";
            cmd = new SqlCommand(query, conn);
    
            try
            {
                conn.Open();
                reader = cmd.ExecuteReader();
                rptCat.DataSource = reader;
                rptCat.DataBind();
            }
            catch (Exception ex)
            {
                lblW.ForeColor = Color.Red;
                lblW.Text = "Bir hata oluştu!<br/>" + ex.Message;
            }
            finally
            {
                conn.Close();
            }
        }
    
        protected void rptCat_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            Repeater rpt = (Repeater)e.Item.FindControl("rptMenu");
            string cateid = DataBinder.Eval(e.Item.DataItem, "ID");
            conn = new SqlConnection(conStr);
            string query = "select * from Menu where CatID=@CatID";
            cmd = new SqlCommand(query, conn);
            cmd.Parameters.Add("@CatID", SqlDbType.Int).Value = cateid;
    
            try
            {
                conn.Open();
                reader = cmd.ExecuteReader();
                rpt.DataSource = reader;
                rpt.DataBind();
            }
            catch (Exception ex)
            {
                lblW.ForeColor = Color.Red;
                lblW.Text = "Bir hata oluştu!<br/>" + ex.Message;
            }
            finally
            {
                conn.Close();
            }
        }
    <asp:Repeater ID="rptCat" runat="server" OnItemDataBound="rptCat_ItemDataBound">
                <ItemTemplate>
                    <h3>
                        <%#  DataBinder.Eval(Container.DataItem, "CatName")%></h3>
                    <asp:Repeater ID="rptMenu" runat="server">
                        <ItemTemplate>
                            <p>
                                <%# DataBinder.Eval(Container.DataItem, "PrdName") %>
                                <span>
                                    <%# DataBinder.Eval(Container.DataItem, "Price")%>
                                    TL</span>
                            </p>
                        </ItemTemplate>
                    </asp:Repeater>
                    <br />
                </ItemTemplate>
            </asp:Repeater>



    Ms. Destiny - Lies/Bout Me (Sexy Body Paint Video)

    Scope Piskopos - Ben 46 Raporlu Bir Deliyim

    Ben başarısız olmadım, sadece işin bu şekilde yapılmayacağının bir çok yolunu buldum ve işin nasıl yapılacağına da bir çok defa yaklaştım.

    24 Nisan 2013 Çarşamba 21:33
  • string cateid = DataBinder.Eval(e.Item.DataItem,"Id").ToString();

    Son olarak bu sekilde dener misiniz, baska herhangi bir yerde sorun olabilecek bir sey gozukmuyor.
    • Yanıt Olarak İşaretleyen 232323232323 24 Nisan 2013 Çarşamba 22:01
    24 Nisan 2013 Çarşamba 21:47
  • sonsuz teşekkürler, harikasın ;)

    Ms. Destiny - Lies/Bout Me (Sexy Body Paint Video)

    Scope Piskopos - Ben 46 Raporlu Bir Deliyim

    Ben başarısız olmadım, sadece işin bu şekilde yapılmayacağının bir çok yolunu buldum ve işin nasıl yapılacağına da bir çok defa yaklaştım.

    24 Nisan 2013 Çarşamba 22:01