PDA

View Full Version : حرفه ای: دسترسي به آي دي خبر ، براي نمايش آن در ادامه خبر با افكت جي كوئري در همان صفحه ....



aspismylove
پنج شنبه 19 آبان 1390, 10:46 صبح
سلام دوستان خسته نباشيد

ببخشيد من چند وقتي هستش كه درگير اين برنامه هستم و هر كاري كه كردم نتونستم اين و درست كنم ، ببينيد من با پلاگين ColorBox.js جي كوئري براي نمايش ادامه خبر استفاده ميخام كنم و همه كارها درست پيش ميره ولي من ميخام وقتي كاربر ادامه خبر رو زد فقط متن و ... هر چيزي كه مال همون خبر هستش و به كاربر نشون بده ، ولي مشكل اينجاس كه من نميدونم كه بايد از كدوم دستور توي قسمت WHERE دستور SQL ام استفاده كنم .

من يك نمونه پرو‍ژه رو براتون ميزام ولي كد رو هم ميزارم كه اگه كسي ميدنه كمكم كنه .

ممنون ميشم راهنمايي كنيد .

اين هم كدش :



<td style="text-align:left;">
<a class='example8' href='Title=<%# Eval("title") %>ID=<%# Eval("id") %>'>ادامه خبر</a>
</td>

<%
Dim cnnNews As New Data.SqlClient.SqlConnection(ConfigurationManager. ConnectionStrings("NoConStr").ToString())
Dim drNews As Data.SqlClient.SqlDataReader
Dim cmdNews As New Data.SqlClient.SqlCommand
cnnNews.Open()
cmdNews.Connection = cnnNews
cmdNews.Commandtext="select * from tbl_mynews"
drNews = cmdNews.ExecuteReader
While drNews.Read
Page.Response.Write("<p><strong>" & drNews("title") & "</strong></p><p>" & drNews("sbody") & "<br/>" & drNews("lbody") & "</p>")
End While
cnnNews.Close()
%>




ببينيد توي دستور بالا كه توي دايوي كه به اون پلاگين وصله ميام به تعداد ادامه خبر هام كد توليد ميكنم .
توي دستور اس كيو ال كه بايد چه كدي بنويسم براي WHERE كه فقط ادامه خبر مربوط به همون آي دي رو به من نشون بده ؟
اگه پروژه رو دانلود كنيد متوجه ميشيد .

ممنون

sara_aryanfar
پنج شنبه 19 آبان 1390, 11:29 صبح
باید id خبرتون رو به اون صفحه منتقل کنید و بعد در اون صفحه رشته کوئری رو اینطوری بنویسی
string comstring = "select * from news where id=@codid" ;
codid آیدی خبر هست که به صفحه فعلی منتقل شده و ما اون رو دریافت کردیم news هم نام جدول من هست

aspismylove
شنبه 21 آبان 1390, 03:35 صبح
باید id خبرتون رو به اون صفحه منتقل کنید و بعد در اون صفحه رشته کوئری رو اینطوری بنویسی
string comstring = "select * from news where id=@codid" ;
codid آیدی خبر هست که به صفحه فعلی منتقل شده و ما اون رو دریافت کردیم news هم نام جدول من هست
ببخشید میشه بیشتر توضیح بدین ؟

باید به کدوم صفحه ارسال کنم ؟ من قراره که ادامه خبر رو توی همون صفحه نمایش بدم ....

ممنون میشم اگه کسی راهنمایی کنه ...

HamidNch
شنبه 21 آبان 1390, 13:31 عصر
اگه از گريدويو استفاده كردي به CommandName و CommandArgument مقدار بده و بعد در رويداد RowCommand كدت رو بنويس.اگر متوجه نشدي بيشتر توضيح بدم.يا راجع به اينايي كه گفتم سرچ كن.

aspismylove
شنبه 21 آبان 1390, 13:45 عصر
اگه از گريدويو استفاده كردي به CommandName و CommandArgument مقدار بده و بعد در رويداد RowCommand كدت رو بنويس.اگر متوجه نشدي بيشتر توضيح بدم.يا راجع به اينايي كه گفتم سرچ كن.

ببخشید داداش میشه بیشتر توضیح بدی ؟؟

ممنون میشم اگه پیام های خصوصیت و چک کنی ...

HamidNch
شنبه 21 آبان 1390, 13:53 عصر
عزيز من هم شركت هستم و وقت يه همچين كاري رو ندارم.اما اگه بخواي بيشتر ميتونم راهنماييت كنم.

<asp:TemplateField HeaderText="نمایش پیام">
<ItemStyle Width="10%" />
<ItemTemplate>
<a id='<%# Eval("ID") %>' style="cursor: pointer">
<img border="0" src="../Img/Show.png" alt="نمایش" /></a>
</ItemTemplate>
</asp:TemplateField>

بعد در رويداد RowCommand:

protected void gridview_RowCommand(object sender, GridViewCommandEventArgs e)
{
if ( e.CommandName.Equals( "Message_Show" ) )
{
int ID = Convert.ToInt32( e.CommandArgument );
}
}

aspismylove
شنبه 21 آبان 1390, 14:06 عصر
عزيز من هم شركت هستم و وقت يه همچين كاري رو ندارم.اما اگه بخواي بيشتر ميتونم راهنماييت كنم.

<asp:TemplateField HeaderText="نمایش پیام">
<ItemStyle Width="10%" />
<ItemTemplate>
<a id='<%# Eval("ID") %>' style="cursor: pointer">
<img border="0" src="../Img/Show.png" alt="نمایش" /></a>
</ItemTemplate>
</asp:TemplateField>

بعد در رويداد RowCommand:

protected void gridview_RowCommand(object sender, GridViewCommandEventArgs e)
{
if ( e.CommandName.Equals( "Message_Show" ) )
{
int ID = Convert.ToInt32( e.CommandArgument );
}
}


آقا خیلی ممنون ، ولی همه این کارهایی رو که شما گفتید و من انجام دادم ولی مثل قبلی شد ...

راستی دستور SQL و باید چطوری تغییر بدم ؟

فک کنم اگه اون وو عوض کنیم جواب بده .:متفکر:

HamidNch
شنبه 21 آبان 1390, 15:07 عصر
شما با اين دستور مقدار ID رو بدست آوردي.خب اونو به دستور SQL يا Stored Procedure خودت بعنوان پارامتر پاس بده.به همين سادگي!
SELECT * FROM tbl_News WHERE News_ID = @ID

موفق باشيد.

aspismylove
شنبه 21 آبان 1390, 15:44 عصر
شما با اين دستور مقدار ID رو بدست آوردي.خب اونو به دستور SQL يا Stored Procedure خودت بعنوان پارامتر پاس بده.به همين سادگي!
SELECT * FROM tbl_News WHERE News_ID = @ID



این کار ر و هم کردم ولی الان هیچی نمایش داده نمیشه ، دفعا قبلی همه ی ادامه خبر ها رو نشون میداد (برای همه خبر ها) ولی الان خالی نمایش میده .

نمیدونم مشکل از کجاس ؟؟؟ :عصبانی++:

راستی توی این قسمت که شما نوشتید :

if ( e.CommandName.Equals( "Message_Show" ) )

میخاستم بدونم که Message Show چیه ؟ من هم باید همین و بنویسم ؟

HamidNch
شنبه 21 آبان 1390, 16:26 عصر
Message_Show مقداري هست كه به CommandName داده بودم.نه شما ميتوانيد هر چي دلتون ميخواد بهش بديد.
ببين تو گريد ويو در داخل تگ Columns يه TemplateField مثل هميني كه من برات نوشتم بايد اضافه كني كه اين بدان معني است كه شما يه ستون ايجاد كرديد و در آن يه لينك براي نمايش خبرتان گذاشته ايد.
خب حالا چطور ميشه فهميد كه در كدام سطر داريم لينك اين ستون را كليك ميكنيم.اين كار از طريق رويداد RowCommand خود گريدويو امكان پذير هست.ابتدا رويداد را ايجاد كنيد و بعد در داخل آن با اين دستور چك ميكنيد كه حتما داريد روي اين لينك كليك ميكنيد:

if ( e.CommandName.Equals( "Message_Show" ) )

بعد داخل اين شرط ميتوانيد با دستور زير مقدار ID خبرموردنظر رو كه اون رو به CommandArgument لينك موجود در ستون ايجاد شده داده ايد بدست آوريد:

int ID = Convert.ToInt32( e.CommandArgument );

حالا بعد از اين مرحله شما ديگه مقدار كليد رو داريد.بايد اين مقدار رو بعنوان پارامتر به روالي كه در SQL نوشته ايد پاس دهيد تا براساس اون محتويات خبر موردنظر برگشت داده شود.
درهرصورت اين يه نمونه هست.شما خودتان بايد جمع بندي كرده و جوانب رو بسنجيد و كد رو پياده كنيد.باز هم اگه مشكلي داشتيد،من درخدمتم.
موفق باشيد

aspismylove
شنبه 21 آبان 1390, 17:02 عصر
داداش تو رو خدا به من فحش ندی .....

من همه کارهایی رو که شما گفتید و رفتم ولی باز هم خالی نشون میده ...

من پروژه رو میزارم هر وقت ، وقتش و داشتید ببینید کجا رو اشتباه رفتم

باز هم مرسی که اینقد راهنمایی کردی :قلب::قلب:

HamidNch
یک شنبه 22 آبان 1390, 09:50 صبح
مشكل اينجاست كه با ColorBox با اين قضيه مشكل داره درضمن يه سري اصلاحي بود كه انجام دادم ببينيد.پيشنهاد ميدم از JQuery Dialog UI استفاده كنيد.(بنده از پلاگين ColorBox تابحال استفاده نكرده ام).
بخشهاي كه تغيير بايد بديد رو در زير قرار ميدم.يكم درمورد ColorBox فكر ميكنم اگر جواب گرفتم،براتون ميزارم. موفق باشيد.

<asp:TemplateField>
<ItemStyle Width="10%"/>
<ItemTemplate>
<%-- <a class="example8" style="font-size:10px;font-weight:bold;cursor:pointer;">ادامه خبر</a>--%>
<asp:LinkButton id="lnk" Text="ادامه خبر" CommandName="ReadMore" CommandArgument='<%# Eval("id") %>' runat="server" />
</ItemTemplate>
</asp:TemplateField>


<div style='display:none;text-align:right;direction:rtl;'>
<div id='inline_example1' style='padding:10px; background:#fff;'>
<%-- <%
Dim cnnNews As New Data.SqlClient.SqlConnection(ConfigurationManager. ConnectionStrings("NoConStr").ToString())
Dim drNews As Data.SqlClient.SqlDataReader
Dim cmdNews As New Data.SqlClient.SqlCommand
cnnNews.Open()
cmdNews.Connection = cnnNews
cmdNews.CommandText = "select * from mynews_tbl where id=@newsid"
cmdNews.Parameters.AddWithValue("newsid",aa)
drNews = cmdNews.ExecuteReader
While drNews.Read
Page.Response.Write("<p><strong>" & drNews("title") & "</strong></p><p>" & drNews("sbody") & "<br/>" & drNews("lbody") & "</p>")
End While
cnnNews.Close()
%>--%>
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</div>



Public aa As Integer
Protected Sub GridView2_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs ) Handles GridView2.RowCommand
If e.CommandName.Equals("ReadMore") Then
aa = Convert.ToInt32(e.CommandArgument)

Dim cnnNews As New Data.SqlClient.SqlConnection(ConfigurationManager. ConnectionStrings("NoConStr").ToString())
Dim drNews As Data.SqlClient.SqlDataReader
Dim cmdNews As New Data.SqlClient.SqlCommand
cnnNews.Open()
cmdNews.Connection = cnnNews
cmdNews.CommandText = "select * from mynews_tbl where id=@newsid"
cmdNews.Parameters.AddWithValue("newsid", aa)
drNews = cmdNews.ExecuteReader
While drNews.Read
'Page.Response.Write("<p><strong>" & drNews("title") & "</strong></p><p>" & drNews("sbody") & "<br/>" & drNews("lbody") & "</p>")
Label2.Text = drNews("title")
Label3.Text = drNews("sbody")
End While
cnnNews.Close()
End If
End Sub

HamidNch
یک شنبه 22 آبان 1390, 10:12 صبح
البته دوتا Label هم تو صفحه گذاشتم و براي جلوگيري از رفرش صفحه بايد از Updatepanel هم استفاده بشه.
مطمئن نيستم بشه از ColorBox براي اين منظور استفاده كرد و حدس ميزنم فقط براي نمايش تصاوير باشه.شما اطلاعاتي كه ميخواين نمايش داده بشه رو تو يه Div ساده بزاريد و اون رو SHow و Hide كنيد مي بينيد كه اطلاعات نشون داده ميشه و مشكلي نيست.ولي بعد استفاده از ColorBox ديگه نمايش داده نميشه.پيشنهاد ديگمم اينه كه يه Div زيبا خودتون طراحي كنيد و با دستورات Jquery اونو نمايش داده و يا مخفي كنيد(افكتهاي Jquery هم زيبا هستند)
موفق باشيد.