PDA

View Full Version : سوال: نمایش متن و عکیس به صورت Marquee ؟



fakhravari
سه شنبه 03 آبان 1390, 22:54 عصر
با سلام
دوستان من به روش Coonenct شدن به دیتابیس مثال متن و عکس را نمایش میدهم در یک Marquee
نمایش میدهم .
به دلیل سنگین شدن سایت می خواهم در یک فایل XML بخونه که سرعت لود بالا بره.
من برای خواندن از این روش استفاده میکنم
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath(@"~\Xml_Top\Links.xml"));
الان به چه شکل به Marquee ارتباط بدم
باسپاس

fakhravari
چهارشنبه 04 آبان 1390, 01:01 صبح
دوستان یاری کنید:ناراحت:

moferferi
چهارشنبه 04 آبان 1390, 10:38 صبح
سلام.
من هم قسمت هایی مثل تبلیغات و کادر های کناری سایت را از xml میخونم البته به با دیتاست انجام نمیدم.
با این روش

XmlDocument xmlDoc = new XmlDocument();
string xmldir = (Request.PhysicalApplicationPath + @"App_Data\config1.xml");
xmlDoc.Load(xmldir);
XmlNodeList nodeList = xmlDoc.SelectNodes("/mysettings/setting[@ID='01']");
address1= nodeList[0].ChildNodes[0].InnerText ;
ابتدا یه سری متغیر از نوع استرینگ تعریف میکنم و ادرس عکس ها توش ذخیره میکنم.
حالا فرض کنیم از قبل تعداد عکسها را میدونیم
به این صورت عکسها را ادرس دهی میکنم
<marquee style="border:1px solid gray">
<img src="<%=address1 %>"/>
<img src="<%=address2 %>"/>
<img src="<%=address3 %>"/>
<img src="<%=address4 %>"/>
<img src="<%=address5 %>"/>
<img src="<%=address6 %>"/>
</marquee>
اگه تعداد عکسها هم مشخص نبود که اصلا کل تگ را باید با دستورات html توی یه استرینگ به وسیله foreach پر کرد.
این روشی بود که من برای مقدار دهی عناصر صفحه از طریق xml استفاده میکنم.

fakhravari
چهارشنبه 04 آبان 1390, 14:14 عصر
با سلام
moferferi عزیز من با کد شما
public static string ad1

XmlDocument xmlDoc = new XmlDocument();
string xmldir = (Request.PhysicalApplicationPath + @"Xml_Top\Slider.xml");
xmlDoc.Load(xmldir);
XmlNodeList nodeList = xmlDoc.SelectNodes("/mysettings/setting[@Img=Img]");
ad1 = nodeList[0].ChildNodes[0].InnerText;

<marquee scrollamount="15" >
<img src="<%= ad1 %>"/>
</marquee>
این erooor میگیره : Object reference not set to an instance of an objec
از این خط ad1 = nodeList[0].ChildNodes[0].InnerText;


من به این صورت فقط 1 عکس می تونم بینم
string xmlPath = Request.PhysicalApplicationPath + @"Xml_Top\Slider.xml";
XmlDocument doc = new XmlDocument();
doc.Load(xmlPath);
XmlNodeList titleList = doc.GetElementsByTagName("Img");
foreach (XmlNode node in titleList)
{
ad1 = "Img_Slider/" + node.FirstChild.Value;
}
میشه رو مثال بالا foreach تعریف کرد:متفکر:

fakhravari
چهارشنبه 04 آبان 1390, 15:29 عصر
دوستان اگه میشه راهنمایی کنید این قسمت باید تموم کنم:اشتباه:

moferferi
چهارشنبه 04 آبان 1390, 18:51 عصر
خوب فرض کنیم تعداد مشخصه
اول فایل cs که مقادیر خودشرا از xml میگیره
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml;

public partial class _Default : System.Web.UI.Page
{
public string address1="";
public string address2="";
public string address3="";
public string address4="";
public string address5="";
protected void Page_Load(object sender, EventArgs e)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("XMLFile.xml"));
XmlNodeList nodeList = xmlDoc.SelectNodes("/mysetting/config[@ID='01']");
address1 ="images/"+ nodeList[0].ChildNodes[0].InnerText+".jpg";
address2 = "images/" + nodeList[0].ChildNodes[1].InnerText + ".jpg";
address3 = "images/" + nodeList[0].ChildNodes[2].InnerText + ".jpg";
address4 = "images/" + nodeList[0].ChildNodes[3].InnerText + ".jpg";
address5 = "images/" + nodeList[0].ChildNodes[4].InnerText + ".jpg";
}
}

این هم فایل xml
<?xml version="1.0" encoding="utf-8"?>
<mysetting>
<config ID="01">
<address>1</address>
<address>2</address>
<address>3</address>
<address>4</address>
<address>5</address>
</config>
</mysetting>



و این هم بخش aspx
<body>
<form id="form1" runat="server">
<div>
<marquee>
<img src="<%=address1 %>"/>
<img src="<%=address2 %>"/>
<img src="<%=address3 %>"/>
<img src="<%=address4 %>"/>
<img src="<%=address5 %>"/>
</marquee>
</div>
</form>
</body>
</html>


حالا بر فرض نیاز دارین عکسها را تغییر بدین
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Server.MapPath("XMLFile.xml"));
XmlNodeList nodeList = xmlDoc.SelectNodes("/mysetting/config[@ID='01']");
nodeList[0].ChildNodes[0].InnerText = "new val";
nodeList[0].ChildNodes[1].InnerText = "new val";
nodeList[0].ChildNodes[2].InnerText = "new val";
nodeList[0].ChildNodes[3].InnerText = "new val";
nodeList[0].ChildNodes[4].InnerText = "new val";
xmlDoc.Save(Server.MapPath("XMLFile.xml"));


این با تعداد پیش فرض بود.
اگه تعداد هم از پیش مشخض نبود حتما خودتون میتونید که دستورات بخش aspx را به وسیله foreach تولید کنیین؟
امیدوارم مشکلتون حل بشه.

moferferi
چهارشنبه 04 آبان 1390, 19:10 عصر
این هم یک پلاگین جالب جی کوئری واسه کار شما
حتما ببینید
لینک دمو و دانلود (http://flexidev.co.za/projects/flexislider/)

fakhravari
چهارشنبه 04 آبان 1390, 19:30 عصر
با سلام ممنون از شما
اما مشکل اینجاست که من برای ذخیره سازی از این دستور استفاده میکنم
ds.Tables.Add(dt);
ds.WriteXml(Server.MapPath(@"~/Xml_Top/Slider.xml"));
و کنفیگ به صورت زیر درست میشه
<?xml version="1.0" standalone="yes"?>
<NewDataSet>
<Table1>
<ImgId>1</ImgId>
<Img>1.jpg</Img>
</Table1>
<Table1>
<ImgId>2</ImgId>
<Img>2.jpg</Img>
</Table1>
<Table1>
<ImgId>3</ImgId>
<Img>3.jpg</Img>
</Table1>
</NewDataSet>
فایل xlm شما یک 01 داره که گروه بندی میشن
برای این فایل xml چی کار کنیم:متفکر:
___
Download a zipped version of this demo
dl نمیشه

moferferi
چهارشنبه 04 آبان 1390, 21:16 عصر
خوب شما هر چی گروه میخوای اضافه کن
<?xml version="1.0" encoding="utf-8"?>
<mysettings>
<setting ID="01">
<specialProduct>True</specialProduct>
</setting>
<setting ID="02">
<specialProduct>True</specialProduct>
</setting>
<setting ID="03">
<specialProduct>True</specialProduct>
</setting>
<setting ID="04">
<specialProduct>True</specialProduct>
</setting>
<setting ID="05">
<specialProduct>True</specialProduct>
</setting>
</mysettings
و اینکه اصلا شما چرا با دیتا ست رو xml کار میکنی.؟
کلاس های زیادی هستش که میشه با xml کار کرد
توی این سایتasp-net-example.blogspot.com برو به بخش xml (البته فیلتره)

fakhravari
پنج شنبه 05 آبان 1390, 01:21 صبح
با سلام
من با دستور کار میکنم
Write , Read در دیتاست .
DataSet ds = new DataSet();
ds.ReadXml(Server.MapPath(@"~\Xml_Top\Links.xml")) ;
در کل من سوالم این بود که اون 01 در کد بالا به صورت دستی اضافه شده چون من می خواهم به صورت داینامیک همه چی باشه . یا شما 1 فید در دیتابیس دارید؟/

fakhravari
پنج شنبه 05 آبان 1390, 02:22 صبح
ایا مرورگرها با marquee مشکل دارن فقط opera درست نشون میده اسلایدها رو:متفکر:

moferferi
پنج شنبه 05 آبان 1390, 10:32 صبح
خوب گفتم که بخش ASPX را که من دستی 5 مقدار وارد کردم شما از طریق FOREACH نود های توی XML را بخون و کد HTML را تولید کن.

fakhravari
پنج شنبه 05 آبان 1390, 19:19 عصر
با سلام ممنون از moferferi
خوب فقط سوال من اینه که اون کد 01 که میشه گفت گروه بندی میکنه.
یعتی نمیشه select * تعریف کرد در xml .
اگر میشه کد مربوطه برای select * راهنمایی کنید:قلب:

moferferi
پنج شنبه 05 آبان 1390, 22:30 عصر
اگه منظورتون از سلکت همراه با شرطه(همونی که با دیتابیس کار میکنیم)نمیدونم با xml بشه یا نه
ولی من خودم تمام تنظیمات سایتم را به همین روش پیاده سازی کردم.البته برای راحتی کار فایل های xml جداگانه طراحی کردم
اما خوب اگه به جای یک گروه چند تا گروه داشتین که به روش زیر میشه این کار را کرد
XmlNodeList nodeList = xmlDoc.SelectNodes("/mysetting/config[@ID='01']");
با foreach نمیدونم چطور میشه توی xml پیچ خورد.اما با for با مشخص بودن تعدا گروه ها میشه این کار رو کرد

int length = 5;
for (int i = 0; i < length; i++)
{
XmlNodeList nodeList = xmlDoc.SelectNodes("/mysetting/config[@ID='0"+i+"']");
address1 = "images/" + nodeList[0].ChildNodes[0].InnerText + ".jpg";
address2 = "images/" + nodeList[0].ChildNodes[1].InnerText + ".jpg";
address3 = "images/" + nodeList[0].ChildNodes[2].InnerText + ".jpg";
address4 = "images/" + nodeList[0].ChildNodes[3].InnerText + ".jpg";
address5 = "images/" + nodeList[0].ChildNodes[4].InnerText + ".jpg";
}

moferferi
پنج شنبه 05 آبان 1390, 22:35 عصر
من فکر کنم شما یه همچین چیزی نیاز داشته باشی.اگه خواستی میتونی به صورت داینامیک گروه هاش را اضافه کرد
<?xml version="1.0" encoding="utf-8"?>
<mysetting>
<config ID="01">
<picaddress>1</picaddress>
<text>2</text>
</config>
<config ID="02">
<picaddress>1</picaddress>
<text>2</text>
</config>
<config ID="03">
<picaddress>1</picaddress>
<text>2</text>
</config>
<config ID="04">
<picaddress>1</picaddress>
<text>2</text>
</config>
<config ID="05">
<picaddress>1</picaddress>
<text>2</text>
</config>
</mysetting>

fakhravari
جمعه 06 آبان 1390, 16:37 عصر
با سلام
الان دسترسی به ویژوال ندارم تا تست کنم . در کل چون یک گالری عکس دارم در page 1 و عکسهای هان به صورت اسلاید نمایش میدهد من به صورت update عکسها را عوض میکنم و نمی توانم مثل شما 01 به صورت دستی اضافه کنم . در کل مثال for بالا رو چک میکنم و اگر نشد با اضافه کردن یه فیلد مثال گروه مثل دستور شما میشه و مشکلی پیش نخواهد امد چون می خواهم فایل xml به صورت داینامیک باشه که دیگه دستی کد وارد نکی write بزنی , read بخونی .
در اخر مشکل marque در مرورگرها به چه شکل حل میشود . این کد من فقط در opera خوب جواب میده