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

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

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

پنج شنبه, 21 آبان 1394 08:43

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

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

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

جدول اول به اسم 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 زیر منو رو درست نوشتم یا نه. دو هفته هست درگیر این قسمتم لطفا راهنماییم کنید ممنون.

پنج شنبه, 21 آبان 1394 08:55
کسانی که از این پست تشکر کرده اند : moonfa1392,
پنج شنبه, 21 آبان 1394 09:03

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

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

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

کسانی که از این پست تشکر کرده اند : moonfa1392,
پنج شنبه, 21 آبان 1394 09:13
پنج شنبه, 21 آبان 1394 09:52

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

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

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

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

ارسال پاسخ برای این تاپیک

ارسال پاسخ مخصوص اعضا سایت می باشد ! میتوانید با حساب کاربری خود وارد سایت شده یا ثبت نام کنید