PDA

View Full Version : خواندن اطلاعات Parent



fakhravari
شنبه 07 دی 1392, 15:37 عصر
سلام
جدول زیر در نظر بگیرید
CREATE TABLE [dbo].[Comennts](
[ID] [bigint] IDENTITY(1,1) NOT NULL,
[ParentID] [bigint] NULL,
[Username] [nvarchar](20) NOT NULL,
[DateTime] [nvarchar](16) NOT NULL,
[Body] [nvarchar](max) NOT NULL,
[PostID] [bigint] NOT NULL)
SET IDENTITY_INSERT [dbo].[Comennts] ON
INSERT [dbo].[Comennts] ([ID], [ParentID], [Username], [DateTime], [Body], [PostID]) VALUES (1, NULL, N'admin', N'1390', N'سلام سایت خوبی است ', 1)
INSERT [dbo].[Comennts] ([ID], [ParentID], [Username], [DateTime], [Body], [PostID]) VALUES (2, NULL, N'user1', N'1392', N'سایت قشنگی است', 2)
INSERT [dbo].[Comennts] ([ID], [ParentID], [Username], [DateTime], [Body], [PostID]) VALUES (4, 1, N'user3', N'1362', N'چیچی میگویی سایت خوبی است', 1)
INSERT [dbo].[Comennts] ([ID], [ParentID], [Username], [DateTime], [Body], [PostID]) VALUES (5, 2, N'admin', N'1362', N'چیچی میگویی سایت قشنگی است', 1)
INSERT [dbo].[Comennts] ([ID], [ParentID], [Username], [DateTime], [Body], [PostID]) VALUES (6, 5, N'user2', N'1362', N'چرا مگه چی شده؟', 1)
INSERT [dbo].[Comennts] ([ID], [ParentID], [Username], [DateTime], [Body], [PostID]) VALUES (7, 4, N'admin', N'1362', N'چرا مگه چی شده؟', 1)
INSERT [dbo].[Comennts] ([ID], [ParentID], [Username], [DateTime], [Body], [PostID]) VALUES (8, NULL, N'user1', N'1392', N'سایت پر محتوایی است', 2)
INSERT [dbo].[Comennts] ([ID], [ParentID], [Username], [DateTime], [Body], [PostID]) VALUES (10, 7, N'admin', N'1392', N'دعوا برای چی هست حالا؟', 1)
INSERT [dbo].[Comennts] ([ID], [ParentID], [Username], [DateTime], [Body], [PostID]) VALUES (12, NULL, N'user2', N'--', N'---', 3)
SET IDENTITY_INSERT [dbo].[Comennts] OFF

چطوری بتونم به یک متد این parent ها را فراخونی کنم؟
قبلا به ای صورت کار میکردم
public static DataTable TopikIsNotParent()
{
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection(DAL.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT ID, ParentID, Username, DateTime, Body, PostID FROM Comennts WHERE(ParentID IS NULL)";
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
con.Close();
return dt;
}
public static DataTable GetParent(int ID)
{
DataTable dt = new DataTable();
SqlConnection con = new SqlConnection(DAL.ConnectionString);
SqlCommand cmd = new SqlCommand();
cmd.Connection = con;
cmd.CommandText = "SELECT ID, ParentID, Username, DateTime, Body, PostID FROM Comennts WHERE ParentID=" + ID;
con.Open();
SqlDataAdapter da = new SqlDataAdapter(cmd);
da.Fill(dt);
con.Close();
return dt;
}
private static string Method()
{
string Q = "";
DataTable Dt = TopikIsNotParent();

for (int i = 0; i < Dt.Rows.Count; i++)
{
Q += "<li class='cmmnt'>";
Q += "<div class='avatar'><a href='javascript:void(0);'><img src='images/" + Dt.Rows[i]["Username"].ToString() + ".png' width='55' height='55'></a></div>";
Q += "<div class='cmmnt-content'>";
Q += "<header><a href='javascript:void(0);' class='userlink'>" + Dt.Rows[i]["Username"].ToString() + "</a> - <span class='pubdate'>" + Dt.Rows[i]["DateTime"].ToString() + "</span></header>";
Q += "<p>" + Dt.Rows[i]["Body"].ToString() + "</p>";
Q += "</div>";


DataTable Dt2 = GetParent(int.Parse(Dt.Rows[i]["ID"].ToString()));
if (Dt2.Rows.Count > 0) { Q += "<ul class='replies'>"; Q += "<li class='cmmnt'>"; }
for (int b = 0; b < Dt2.Rows.Count; b++)
{
Q += "<div class='avatar'>";
Q += "<a href='javascript:void(0);'><img src='images/" + Dt2.Rows[b]["Username"].ToString() + ".png' width='55' height='55'></a></div>";
Q += "<div class='cmmnt-content'>";
Q += "<header><a href='javascript:void(0);' class='userlink'>" + Dt2.Rows[b]["Username"].ToString() + "</a> - <span class='pubdate'>" + Dt2.Rows[b]["DateTime"].ToString() + "</span></header>";
Q += "<p>" + Dt2.Rows[b]["Body"].ToString() + "</p>";
Q += "</div>";



DataTable Dt3 = GetParent(int.Parse(Dt2.Rows[b]["ID"].ToString()));
if (Dt2.Rows.Count > 0) { Q += "<ul class='replies'>"; Q += "<li class='cmmnt'>"; }
for (int c = 0; c < Dt3.Rows.Count; C++‎‎‎‎)
{
Q += "<div class='avatar'>";
Q += "<a href='javascript:void(0);'><img src='images/" + Dt3.Rows[c]["Username"].ToString() + ".png' width='55' height='55' alt='Professor photo avatar'></a></div>";
Q += "<div class='cmmnt-content'>";
Q += "<header><a href='javascript:void(0);' class='userlink'>" + Dt3.Rows[c]["Username"].ToString() + "</a> - <span class='pubdate'>" + Dt3.Rows[c]["DateTime"].ToString() + "</span></header>";
Q += "<p>" + Dt3.Rows[c]["Body"].ToString() + "</p>";
Q += "</div>";



DataTable Dt4 = GetParent(int.Parse(Dt3.Rows[b]["ID"].ToString()));
if (Dt2.Rows.Count > 0) { Q += "<ul class='replies'>"; Q += "<li class='cmmnt'>"; }
for (int d = 0; d < Dt4.Rows.Count; d++)
{
Q += "<div class='avatar'>";
Q += "<a href='javascript:void(0);'><img src='images/" + Dt4.Rows[d]["Username"].ToString() + ".png' width='55' height='55' alt='Professor photo avatar'></a></div>";
Q += "<div class='cmmnt-content'>";
Q += "<header><a href='javascript:void(0);' class='userlink'>" + Dt4.Rows[d]["Username"].ToString() + "</a> - <span class='pubdate'>" + Dt4.Rows[d]["DateTime"].ToString() + "</span></header>";
Q += "<p>" + Dt4.Rows[d]["Body"].ToString() + "</p>";
Q += "</div>";
}
if (Dt2.Rows.Count > 0) { Q += "</li>"; Q += "</ul>"; }



}
if (Dt2.Rows.Count > 0) { Q += "</li>"; Q += "</ul>"; }

}
if (Dt2.Rows.Count > 0) { Q += "</li>"; Q += "</ul>"; }

Q += "</li>";
}
return Q;
}

amir20611
دوشنبه 09 دی 1392, 16:53 عصر
بنظرم باید کاری کرد که ترتیب کامنت ها مثل نمایش اونها باشه لینک زیر رو نگاه کنید
https://coderwall.com/p/lixing

حمیدرضاصادقیان
چهارشنبه 11 دی 1392, 22:26 عصر
سلام.
در سایت اگر جستجو کنید بارها به این سوال جواب داده شده است.