مرجع تخصصی برنامه نویسان

انجمن تخصصی برنامه نویسان فارسی زبان

کاربر سایت

moonfa1392

عضویت از 1394/08/17

نحوه ایجاد زیرمنو با Repeater در Asp.net

  • پنجشنبه 21 آبان 1394
  • 08:43
تشکر میکنم

سلام. من میخوام برای منوی سایتم زیر منو بذارم که از دیتابیس بخونه و از ریپیتر استفاده کنم.

توی بانک اطلاعاتی دو تا جدول ساختم.

جدول اول به اسم Tbl_Menu برای منو:

جدول دوم به اسم Tbl_ZirMenu برای زیر منو:

این کد رو در صفحه Main.master نوشتم:

<div class="Menu">
            <div class="MCenter">
                <ul>
                    <asp:Repeater ID="Repeater1" runat="server">
                        <ItemTemplate>
                            <li>
                                <a href='<%# Eval("Mnu_Link")%>'><%# Eval("Mnu_Title") %></a>
                                <ul>
                                    <asp:Repeater ID="Repeater2" runat="server">
                                        <ItemTemplate>
                                            <li><a href='<%# Eval("Mnu_Link")%>'><%# Eval("Mnu_Title") %></a></li>
                                        </ItemTemplate>
                                    </asp:Repeater>
                                </ul>
                            </li>
                        </ItemTemplate>
                    </asp:Repeater>
                </ul>
            </div>
        </div>

برای خلاصه کردن کد ها یک کلاس به نام DAL درست کردم و توابع رو به این صورت داخلش نوشتم:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Net.Mail;
/// <summary>
/// Summary description for DAL
/// </summary>
public class DAL
{
	public DAL()
	{
		//
		// TODO: Add constructor logic here
		//
	}
    public void ExecNonQuery(string sqltext)
    {
        SqlConnection k = new SqlConnection();
        k.ConnectionString = "Data Source=SADEGH-PC;Initial Catalog=Cr4bD6Jk8xq5gUj4;Integrated Security=True;User Instance=False";
        k.Open();
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = k;
        cmd.CommandText = sqltext;
        cmd.ExecuteNonQuery();
        k.Close();

    }
    public DataTable ExecuteQuery(string sqltext)
    {
        SqlConnection k = new SqlConnection();
        k.ConnectionString = "Data Source=SADEGH-PC;Initial Catalog=Cr4bD6Jk8xq5gUj4;Integrated Security=True;User Instance=False";
        DataTable dt = new DataTable();
        SqlDataAdapter da = new SqlDataAdapter();
        da.SelectCommand = new SqlCommand();
        da.SelectCommand.Connection = k;
        da.SelectCommand.CommandText = sqltext;
        da.Fill(dt);
        return dt;

    }
}

 

و این کد رو در بخش Main.master.cs نوشتم:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

public partial class Main : System.Web.UI.MasterPage
{
    protected void Page_Load(object sender, EventArgs e)
    {
        Menubind();
        Zirmenubind();
    }
    public void Menubind()
    {
        DAL run = new DAL();
        string sqltext = "Select * from tbl_menu where Mnu_PosID=1 order by Mnu_Order asc";

        Repeater1.DataSource = run.ExecuteQuery(sqltext);
        Repeater1.DataBind();
    }
    public void Zirmenubind()
    {
        DAL run = new DAL();
        string sqltext = "Select * from tbl_zirmenu Where mnu_oid=" + Eval("ID");

        Repeater2.DataSource = run.ExecuteQuery(sqltext);
        Repeater2.DataBind();
    }
}

اما اجرا میگیرم به این ارور دیتابیس میخورم که میگه آی دی Repeater2 وجود نداره درحالی که وجود داره و runat هم مساوی server هست.

اصلا نمیدونم دستور select زیر منو رو درست نوشتم یا نه. دو هفته هست درگیر این قسمتم لطفا راهنماییم کنید ممنون.

پاسخ های این پرسش

تعداد پاسخ ها : 7 پاسخ
کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • پنجشنبه 21 آبان 1394
  • 09:03

من از همین مقالات برای درست کردن زیرمنو کمک گرفتم اما الان مشکل من اینجاست که آی دی Repeater2 دو رو نمیخونه و ارور میده

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 21 آبان 1394
  • 09:07

منظور از Eval در متد Zirmenubind چیست ؟

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • پنجشنبه 21 آبان 1394
  • 09:13

اون دستور select رو در متد zirmenubind نمیدونم چجوری باید بنویسم. اون Eval  رو از مقاله زیر کپی کردم

ساخت منو و زیر منو از بانک اطلاعاتی Asp.Net
 

کاربر سایت

ایمان مدائنی

عضویت از 1392/01/20

  • پنجشنبه 21 آبان 1394
  • 09:52

Eval رو فقط میتونید در aspx و داخل یک کنترل Data استفاده کنید

در کد نمیتونید از Eval استفاده کنید

چرا دقیقا مثل خود مقاله پیش نرفتید ؟

کاربر سایت

moonfa1392

عضویت از 1394/08/17

  • پنجشنبه 21 آبان 1394
  • 10:07
من تونستم یه منو دقیقا مثل مقاله طراحی کنم اما وقتی داخل پروژه خودم میارم ارور کانکشن استرینگ میده و اصلا اجرا نمیشه. درثانی من جدول دیتابیس رو قبلا نوشتم و صد تا سطر داره نمیتونم از اول بنویسم و اینکه فیلد های بیشتری نسبت به پروژه شما دارم
کاربر سایت

f.mirshekar

عضویت از 1393/07/22

  • پنجشنبه 5 آذر 1394
  • 21:08

دوست عزیز لینک زیر به شما کمک خواهد کرد

http://nazimakul.com/article/repeater-inside-an-other-repeater-in-asp-net_1050

کاربرانی که از این پست تشکر کرده اند

هیچ کاربری تا کنون از این پست تشکر نکرده است

اگر نیاز به یک مشاور در زمینه طراحی سایت ، برنامه نویسی و بازاریابی الکترونیکی دارید

با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)