PDA

View Full Version : بایند کردن منوی Asp به بانک و یک مثال چند لایه ای



majnun
جمعه 30 مهر 1389, 16:13 عصر
سلام دوستان

میخوایم در این پست یه منو رو به یه جدول از بانک ارتباط بدیم

فیلدهای جدول

id
menutext
menu url

ابتدا اومدم کلاس ساختم به این صورت


using System;
using System.Data;
using System.Configuration;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;

/// <summary>
/// Summary description for menu
/// </summary>
public class menuu
{
private int id;

public int Id
{
get { return id; }
set { id = value; }
}
private string menutext;

public string Menutext
{
get { return menutext; }
set { menutext = value; }
}
private string menuurl;

public string Menuurl
{
get { return menuurl; }
set { menuurl = value; }
}

public menuu()
{
//
// TODO: Add constructor logic here
//
}
}





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

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

اینم تابع :


public List<menuu> select_menuitem()
{
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings.Get ("sonn-str"));
SqlCommand cmd = new SqlCommand("Select_menuitem", con);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;


con.Open();
SqlDataReader dr;
dr = cmd.ExecuteReader();
if (!dr.HasRows)
{
dr.Close();
return null;
}
else
{
List<menuu> list = new List<menuu>();
while (dr.Read())
{
menuu temp = new menuu();
temp.Menutext = dr.GetString(0);
temp.Menuurl = dr.GetString(1);

list.Add(temp);
}
dr.Close();
return list;
}
}



خب جالا تو صفحه فرم میام تابع بالا رو فراخونی میکنم و به منو اضافه میکنم اطلاعاتو


protected void Page_Load(object sender, EventArgs e)
{
List<menuu> temp = new List<menuu>();
selectClass cls = new selectClass();
temp = cls.select_menuitem();
for (int i = 0; i < temp.Count; i++)
{

MenuItem m = new MenuItem();
m.Text = temp[i].Menutext.ToString();
m.NavigateUrl = temp[i].Menuurl.ToString();
Menu1.Items.Add(m);
}
}



اینم منویی که درون صفحه قرار داره


<asp:Menu ID="Menu1" runat="server" Font-Underline="False">
<DynamicItemTemplate>
<%# Eval("Text") %>
</DynamicItemTemplate>
<StaticItemTemplate>
<div align="center" style="padding: 4px">
<asp:HyperLink ID="HyperLink1" runat="server" Font-Names="Tahoma"
NavigateUrl='<%# Eval("NavigateUrl") %>' Text='<%# Eval("Text") %>'></asp:HyperLink>
</div>
</StaticItemTemplate>
</asp:Menu>



در ضمن کانکشن استرینگ درون وب کانفیگه :



<appSettings>
<add key="sonn-str" value="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirector y|\DBMENUbiNding.mdf;Integrated Security=True;User Instance=True"/>
</appSettings>



فایل برنامه رو هم ضمیمه میکنم

pbiuki630
چهارشنبه 05 آبان 1389, 10:30 صبح
از لطفتون ممنون كمك زيادي به من كرديد.

daneshjoo2
پنج شنبه 06 آبان 1389, 15:23 عصر
سلام
منوی asp.net به راحتی به یه site map وصل میشه، این site map از نوع xml هست، حالا شما میخوای این منو رو به دیتابیس bind کنی، استانداردترین و بهترین راه اینه که شما یه کلاس درست کنی مثلا به اسم SQLSiteMapProvider و اونو از SiteMapProvider مایکروسافت inherit کنی و بعد از web config اونو به عنوان siteMapProvider به پروژه معرفی کنی. دقیقا کاری که مایکروسافت برای siteMap خودش انجام داده... یک XMLSiteMapProvider ساخته که از SiteMapProvider ارثبری کرده و اونو default قرار داده.