سلام وقتتون بخیر
این کد های من هست:
<div class="content-list"> <asp:SqlDataSource ID="SqlDataSource1" ConnectionString="<%$ ConnectionStrings:dbconnection %>" runat="server" SelectCommand="select * from tbl_content where bin='false' and notactive='false'"></asp:SqlDataSource> <ul> <asp:Repeater ID="Repeater2" DataSourceID="SqlDataSource1" runat="server"> <ItemTemplate> <li> <div class="picture"> <img alt="<%#Eval("title") %>" title="<%#Eval("title") %>" src="<%#Eval("picture") %>" /> </div> <div class="left"> <div class="title"> <div class="right"> <a href="<%# string.Format("FullContent.aspx?id={0}",Eval("id")) %>"> <h2><%#Eval("title") %></h2> </a> <p class="date"><%#Eval("datereg") %></p> </div> <div class="buttons"> <div class="comments"> <div class="img"></div> <asp:SqlDataSource ID="SqlDataSource2" ConnectionString="<%$ ConnectionStrings:dbconnection %>" runat="server" SelectCommand='<%#"SELECT count(id) as id FROM [tbl_comments] Where trash='false' and active='true' and postid="+Eval("id") %>'></asp:SqlDataSource> <a href="#" target="_blank"> <asp:Repeater ID="Repeater3" DataSourceID="SqlDataSource2" runat="server"> <ItemTemplate> <%# Eval("id") %> </ItemTemplate> </asp:Repeater> دیدگاه</a> </div> <div class="seen"> <div class="img"></div> <p>+6549</p> </div> <div class="like"> <div class="img"></div> <p>659</p> </div> </div> </div> <div class="text"> <p><%#Eval("description") %> [...]</p> <a href="<%# string.Format("FullContent.aspx?id={0}",Eval("id")) %>" class="more"> <span>بیشتر بخوانید!</span> <div class="img"></div> </a> </div> </div> </li> </ItemTemplate> </asp:Repeater> </ul> </div>
ارور اینه:
مشکل درواقع از خصوصیت SelectCommand در دیتاسورس دوم که مال ریپیتر داخلی هست:
SelectCommand='<%#"SELECT count(id) as id FROM [tbl_comments] Where trash='false' and active='true' and postid="+Eval("id") %>'
وقتی به صورت زیر بنویسمش ارور رفع میشه ولی مشکل حل نمیشه، چون من میخوام شرط بذارم که تعداد نظراتی که مربوط به این پست هست یا درواقع postID شون برابر با ID پست هست رو نمایش بده نه تعداد تمام نظرات رو:
SelectCommand="SELECT count(id) as id FROM [tbl_comments] Where trash='false' and active='true'"
خروجی کار هم درواقع این هست، ریپیتر دوم تعداد نظرات هر مطلب رو نمایش میده:
مشکل بعد از 5 ساعت تلاش حل شد
باید از SelectParameters و ControlParameter داخل SqlDataSource استفاده میکردم به این صورت که ابتدا ID رو داخل یک Lable در همون Repeater اولی ذخیره کردم و بعد از طریق ControlParameter به SelectParameters متصلش کردم.
کد نهایی شد این:
<asp:SqlDataSource ID="SqlDataSource2" ConnectionString="<%$ ConnectionStrings:dbconnection %>" runat="server" SelectCommand="SELECT count(id) as id FROM [tbl_comments] Where trash='false' and active='true' and postid = @NumID"> <SelectParameters> <asp:ControlParameter Name="NumID" Type="Int32" ControlID="Label1" PropertyName="Text" /> </SelectParameters> </asp:SqlDataSource>
هیچ کاربری تا کنون از این پست تشکر نکرده است
با ما تماس بگیرید تا در این مسیر همراهتان باشیم :)