PDA

View Full Version : مشکل در for تو در تو و دو DataTable



bftarane
جمعه 29 آذر 1392, 15:14 عصر
سلام.
من قصد دارم این کدها رو داینامیک کنم (می خوام یه گالری که گروه بندی هم داره رو داینامیک کنم)

<div class="container">
<div class="content">
<div><a href="#"><img src="images/album1/thumbs/1.jpg" alt="images/album1/1.jpg" class="thumb" /></a></div>
</div>
<div class="content">
<div><a href="#"><img src="images/album1/thumbs/2.jpg" alt="images/album1/2.jpg" class="thumb" /></a></div>
</div>

</div>
<div class="container">
<div class="content">
<div><a href="#"><img src="images/album2/thumbs/1.jpg" alt="images/album2/1.jpg" class="thumb" /></a></div>
</div>
</div>
یعنی به ازای هر گروه باید یه دیو container و یه دیو content و همینطور یه تگ a و یه تگ img ایجاد بشه به صورت داینامیک

لطفاً این کد رو ببینید

DataTable dt1;
DALBase DBase = new DALBase();
protected void Page_Load(object sender, EventArgs e)
{
string GalleryCat = string.Empty;
string Gallery = string.Empty;

dt1 = GetAllGalleryCat();


for (int i = 0; i < dt1.Rows.Count; i++)
{

GalleryCat += "<li>" + dt1.Rows[i]["Title"] + "</li>";
Gallery += "<div class=\"container\"> <div class=\"content\" > <div>" + "text" + "</div> </div> </div>";

}

Literal2.Text = GalleryCat;
Literal1.Text = Gallery;
}
تا اینجا مشکلی نیست و این کد همچین خروجی ای میده

<div class="container"> <div class="content" > <div>text</div> </div> </div>
<div class="container"> <div class="content" > <div>text</div> </div> </div>
حالا من می خوام به جای اون text که نوشتم یه همچین کدی قرار بگیره

<a><img src="images/1.jpg"></a><a><img src="images/2.jpg"></a><a><img src="images/3.jpg"></a>
در واقع من می خوام همه عکسهای مربوط به یک گروه گالری رو واکشی کنم و به جای اون text قرار بدم
برای همین داخل for اول یه for دیگه رو هم اضافه کردم و نتیجه به شکل زیر شد

for (int i = 0; i < dt1.Rows.Count; i++)
{

GalleryCat += "<li>" + dt1.Rows[i]["Title"] + "</li>";

DataTable dt2 = GetGallery(Convert.ToInt32(dt1.Rows[i]["GC_ID"]));
for (int j = 0; j < dt2.Rows.Count; j++)
{
Literal3.Text += "<a href=\"#\"><img src=\"Gallery/" + dt1.Rows[i]["Folder"] + "/" + dt2.Rows[j]["Pic"] + "\"" + " alt=\"Gallery/" + dt1.Rows[i]["Folder"] + "/" + dt2.Rows[j]["Pic"] + "\"" + " class=\"thumb\" />" + "</a>";

}


Gallery += "<div class=\"container\"> <div class=\"content\" > <div>" + Literal3.Text + "</div> </div> </div>";
dt2.Clear();

}

Literal2.Text = GalleryCat;
Literal1.Text = Gallery;
}
ولی حالا خروجی چیزی نیست که انتظار داشتم یعنی به شکل زیره

<div class="container"> <div class="content" > <div><a href="#"><img src="Gallery/Products/" alt="Gallery/Products/" class="thumb" /></a><a href="#"><img src="Gallery/Products/" alt="Gallery/Products/" class="thumb" /></a><a href="#"><img src="Gallery/Products/3.jpg" alt="Gallery/Products/3.jpg" class="thumb" /></a><a href="#"><img src="Gallery/Products/1.jpg" alt="Gallery/Products/1.jpg" class="thumb" /></a></div> </div> </div>
همونطور که می بینید دیگه دیو container و content تکرار نشدن.

ایراد کار چیه؟ ممنون

bftarane
جمعه 29 آذر 1392, 15:31 عصر
یه توضیح دیگه اینکه
اومدم for دوم رو کامنت کردم بازم مشکل باقیه یعنی در واقع فکر می کنم مشکل مربوط به تعریف یه دیتاتیبل دیگه در for اول مربوط میشه.
کسی توضیحی می تونه در این رابطه بده؟

for (int i = 0; i < dt1.Rows.Count; i++)
{

GalleryCat += "<li>" + dt1.Rows[i]["Title"] + "</li>";

DataTable dt2 = GetGallery(Convert.ToInt32(dt1.Rows[i]["GC_ID"]));
//for (int j = 0; j < dt2.Rows.Count; j++)
//{
//Literal3.Text += "<a href=\"#\"><img src=\"Gallery/" + dt1.Rows[i]["Folder"] + "/" + dt2.Rows[j]["Pic"] + "\"" + " alt=\"Gallery/" + dt1.Rows[i]["Folder"] + "/" + dt2.Rows[j]["Pic"] + "\"" + " class=\"thumb\" />" + "</a>";

//}


Gallery += "<div class=\"container\"> <div class=\"content\" > <div>" + Literal3.Text + "</div> </div> </div>";
dt2.Clear();

}