PDA

View Full Version : سوال: طراحی اینترفیس بخش نظرات با قابلیت پاسخ تو در تو؟



hamid1988
شنبه 14 بهمن 1391, 23:45 عصر
حتما خیلی از سایت هایی رو که با وردپرس راه اندازی شدن دیده اید. یکی از ویژگی های این سایت ها اینه که در بخش نظرات میشه برای هر نظر پاسخ داد و برای هر پاسخ هم دوباره پاسخ دیگه ای داد و این پاسخ های مرتبط تو در تو نشون داده میشن.

http://i.stack.imgur.com/Hve4D.jpg

جدول زیر رو در بانک اطلاعاتی طراحی کردم که در اون Type دو مقدار Comment یا Reply رو میتونه داشته باشه.

ID
Type // Comment or Reply
Body
Email
Website
DateTime
ParentId

مشکل اصلی در نحوه ی نمایش بصورتی هست که در بالا عکسش رو می بینید. استفاده از کنترل های دات نت بصورت تودرتو فقط باعث میشه پاسخ ها تا چند مرحله نمایش داده بشن اما من میخوام محدودیتی در مراحل وجود نداشته باشه.
راه حل شما؟

alihassanabadi
دوشنبه 16 بهمن 1391, 16:08 عصر
سلام
آره تیبل رو خوب طراحی کردی اینو راحت میشه به صورت tree نشون داد.

hamid1988
پنج شنبه 19 بهمن 1391, 10:50 صبح
سلام
آره تیبل رو خوب طراحی کردی اینو راحت میشه به صورت tree نشون داد.

چطور؟ میشه بیشتر توضیح بدید.

alihassanabadi
پنج شنبه 19 بهمن 1391, 11:51 صبح
سلام آره
چرا که نه
کدش رو اینجا میزارم البته با تری ویو

private void BindTreeViewControl()
{
DataSet ds = GetDataSet("select * from yourtable");
DataRow[] Rows = ds.Tables[0].Select("ParentId=0"); // Get all parents nodes
for (int i = 0; i < Rows.Length; i++)
{
TreeNode root = new TreeNode(Rows[i]["Title"].ToString(), Rows[i]["ID"].ToString());
string strt = Rows[i]["Title"].ToString();
root.SelectAction = TreeNodeSelectAction.Expand;
CreateNode(root, ds.Tables[0]);
treeviwExample.Nodes.Add(root);
}
}

public void CreateNode(TreeNode node, DataTable Dt)
{
DataRow[] Rows = Dt.Select("ParentId =" + node.Value);
if (Rows.Length == 0) { return; }
for (int i = 0; i < Rows.Length; i++)
{
TreeNode Childnode = new TreeNode(Rows[i]["Title"].ToString(), Rows[i]["ID"].ToString());
string ui = Rows[i]["Title"].ToString();
Childnode.SelectAction = TreeNodeSelectAction.Expand;
node.ChildNodes.Add(Childnode);
CreateNode(Childnode, Dt);
}
}
private DataSet GetDataSet(string Query)
{
DataSet Ds = new DataSet();
try
{
string strCon = @"Data Source=(local);Initial Catalog=yourdatabase;Integrated Security=True";
SqlConnection Con = new SqlConnection(strCon);
SqlDataAdapter Da = new SqlDataAdapter(Query, Con);
Da.Fill(Ds);
}
catch (Exception) { }
return Ds;
}

متد اول رو تو پیج لود فراخوانی کن و یه TreeView به اسم treeviwExample به صفحت اضافه کن
البته مثال های زیادی تو اینترنت هست ولی نه به طورتی که شما میخواین به صورت درختی