با سلام به دوستان عزیز
سوال من این بود که چطور میشه به صفحات اینجور لینک داد news.aspx?id=1 مثلا یه صفحه با نام news دارم که لینک اخبار توی اون هست حالا چطور میشه مثلا به اخبار اول لینک news.aspx?id=1 و بقیه اخبار رو هم همین طور لینک داد
با تشکر
با سلام به دوستان عزیز
سوال من این بود که چطور میشه به صفحات اینجور لینک داد news.aspx?id=1 مثلا یه صفحه با نام news دارم که لینک اخبار توی اون هست حالا چطور میشه مثلا به اخبار اول لینک news.aspx?id=1 و بقیه اخبار رو هم همین طور لینک داد
با تشکر
خوب این طوری شما دو تا کار می تونید بکنید.
1- با استفاده از دیتابس
2- با استفاده از صفحات از پیش نوشته شده
حالا شما کدوم رو می خوایید؟
بای
ميخوام با استفاده از ديتابس باشه
ببين دااااش!
توي صفحه News دو تا پنل ايجاد مي كني! (يكي پيدا و يكي پنهان) و توي هر پنل يه SqlDatasource
توي پنل پيدا يه گرايدويو ايجاد كن و تيتر خبرها رو بهش اتصال بده!
بعد توي پنل پنهان يه ديتيل ويو يا هرچيز ديگه اي ايجاد كن! بعد يه كدي شبيه به اين تو قسمت Load صفحه قرار بده:
ProtectedSub Page_Load(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Load
Panel2.Visible = False
Dim id AsString = Page.Request.QueryString.Get("newsId")
IfNot id IsNothingThen
Try
Dim Sql As SqlDataSource = Panel2.FindControl("Details")
Sql.ConnectionString = ConfigurationManager.ConnectionStrings.Item("ConnectionString").ToString
Sql.SelectCommandType = SqlDataSourceCommandType.Text
Sql.SelectCommand = "SELECT * FROM [News] WHERE ([ID] = @id)"
Sql.SelectParameters.Add("id", id)
Panel1.Visible = False
Panel2.Visible = True
DetailsView1.DataBind()
Catch ex As Exception
Server.Transfer("ErrorPage.aspx")
EndTry
EndIf
EndSub
امیدم به دستان زیبای اوست . آنکه می آید . همان که نامش منجی ست ....
به راستی اگر غرق نبودیم چرا مارا به منجی ای نیازمند کرده اند؟ ... دنیا دریاست ....
دلنوشته های من
خب دوست عزیز این کار ها رو کردم ولی تو صفحه چیزی دیده نمیشه
شما بايد تو GridView پنل اول عنوان صفحه ات رو به صورت لينك نمايش بدي~/news.aspx?ID={0}
و با استفاده از كد salehbagheri خبرت رو فراخواني كن
البته فراموش نشه كه زماني كه ميخواي خبر رو نشان بدي بايد پنل اول رو مخفي و پنل دوم رو نمايش بدي؛ ميتوني بوسيله QueryString[ID] چك كني
پ.ن: انگاري راهنمايي من خيلي زمانبر بود
با سلام
اینیکه شما میگید آی دی هر خبر رو به آخر url همون طوری بچسبونید باید دستی انجام بدم
یا نه به طور اتوماتیک میشه آدرس داد
میشه درباره این بیشتر توضیح بدینتو صفحه دوم مثلا اخبار با نیوز آی دی رو بگیرید و حالا تو اون با اون آی دی خبر ! خبر رو از بانک یا فایل و یا ... لود کنید!!
ببینید دوستان من دو صفحه دارم به نام های news.aspx و news1.aspx و میخوام لینک اخبار تو صفحه news باشه و لینک هم به این شکل news1.aspx?id=1 و وقتی روی لینک کلیک میکنم تو صفحه news1.aspx نشون داده بشه
با تشکر چون تازه واردم اشکال خیلی پیش میاد
سلام
حالا کد می خوای که برات بنویسم؟(اطلاعات دیگه نمی خوای بدی؟ sql باشه چی باشه)
بای
ببین یه فایل گزاشتم
http://www.barnamenevis.org/sh...d.php?t=116433
نظرت رو هم بگو
انتقال با session
خیلی هم ساده است (به درد خودت می خوره)
بای
اين كه خيلي ساده است.
1- ليست اخبارت رو بريز تو يك GridView
2- يك Cell با فرمت hyperlink درست كن و به اين صورت تنظيم كن
<asp:HyperLinkField
DataNavigateUrlFields="NewsId"
DataNavigateUrlFormatString="~/News.aspx?newsID={0}"
DataTextField="NewsId"
DataTextFormatString="متن خبر">
3- تو همون صفحه يا صفحه بعد چك كن كه QueryString با نام newsID پر هست يا نه؛ اگه پره به وسيله اون از بانكت Select كن و خبر رو به وسيله DetailView نمايش بده
com = "Select * from[News] where NewsID = Request.QueryString["newsID"]
البته بهتره براي Select بانك از QueryString استفاده نكني و اونو قبلش تو يك متغير بريزي و مقدارش رو چك كني
حالا كجاش نامفهومه؛ توضيح بدم
البته كدها با CSharp هست
مشکلم داره حل میشه فقط اینکه تو صفحه بعد چطور نمایش بدم
در ضمن سوال دیگه ای داشتم اینکه اینجور لینک ها رو فقط تو دیتاویو می تونیم ایجاد کنیم یا بین متن نیز می توان ساخت
آخرین ویرایش به وسیله arta.nasiri : دوشنبه 14 مرداد 1387 در 17:46 عصر
ببین من از این روش استفاده کردم جواب هم داده ... برای دیتابیس اکسس هم هستش
فرض کنیم میخوای عنوان خبرهات رو تو صفحه news و شرح هر کدوم از اونا رو که روشون کلیک کردی ، تو صفحه news1 ببینی .... تا اینجا ok ...
تو صفحه news و تو لود اون از یک oledbdatareader استفاده میکنی تا لیبلها و id های (عنوان یا title) مورد نظرت رو از بانک بخونی
OleDbDataReader reader;
OleDbConnection connection = new OleDbConnection();
connection.ConnectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " + Server.MapPath("~/db2.mdb");
OleDbDataAdapter adapter = new OleDbDataAdapter("", connection);
adapter.SelectCommand.CommandText = "select id,title from table where ([id] >10)
connection.Open();
reader = adapter.SelectCommand.ExecuteReader();
حالا تو ادامه کدهای همین صفحه تا جایی که reader پر باشه باید title رو که خوندی به عنوان hiperlink
قرار بدی (به تعداد سطرهای reader باید هایپرلینک درست کنی . حالا ممکنه 1 سطر داشته باشی یا ممکنه 100 سطر داشته باشی) برای اینکه در صورتی که تعداد سطرهای reader زیاد باشه (که این باعث به وجود اومدن تعداد زیادی هایپرلینک میشه) ظاهر فرمت بهم نریزه (از لحاظ height) میتونی یک panel
تو صفحه news قرار بدی و خصوصیت ScrollBars رو برابر Vertical بزاری ... حالا ادامه کدنویسی ...
تو ادامه کدهای #c مربوط به صفحه news مینویسی >>>
while (reader.Read())
{
HyperLink a = new HyperLink();
Panel1.Controls.Add(a);
a.Text = "<br />" + reader.GetString(1) + " <br />";
a.NavigateUrl = "~/news1.aspx?no-row=" + reader.GetValue(0).ToString();
a.Visible = true;
Panel1.Visible = true;
}
reader.Close();
connection.Close();
اما تو کدهای صفحه دومت یعنی news1
اول یک GridView میزاری تو صفحه و visible اون رو false میکنی و از طریق علامتی که کنارشه(<) به صورت
ویزاردی وصل میشی به دیتابیس و جدولی که میخوای ازش بر اساس id که به این صفحه فرستادی ، کوئری بگیری (این قسمتها رو دارم همینطوری میگم . یعنی برنامه جلوم نیست که اسمها رو دقیق بگم اگه جایی اشتباه شد شرمنده)
ناراحت نشو ... نگو بابا id رو کی فرستادم به این صفحه... با کدهایی که تو بالا گفتم ، این کارو کردی ... توضیح مربوط به عناوین رو ،حالا هرچی که اسمشو گذاشتی (مثلا فرض کن اسم ستونش رو گذاشتی mem) تیک میزنی ...
و بعد next و بعد روی دکمه where کلیک میکنی ... تو combobox ستون id رو انتخاب میکنی (ببین من فرض کردم که id رو به این صفحه فرستادی) نام رو برابر id قرار میدی و از combobox بعدی
QueryStringField رو انتخاب میکنی و نامش رو برابر قسمتی از کدها (کدهای بالا) که نارنجی کردم میزاری(no-row) ... اسم این 2 قسمت باید یکی باشه و مقدار پیش فرض اون هم لازم نیست . خالی رهاش کن و ok کن و
بعد finish میکنی ... حالا یکAccessDataSource به پایین جدولت اضافه شده ... اگه تو کدهای html
این صفحه نگاه کنی (گفتم html که بدونی کجا رو نگاه کنی . والا همش هم html نیست)
یک تگ <SelectParameters> به صفحه اضافه شده که باید اینطوری باشه
<SelectParameters>
<asp:QueryStringParameterName="id"QueryStringField="no-row"Type="Int32"/>
</SelectParameters>
حالا تو کدهای #c مربوط به صفحه news1 و تو قسمت load مینویسی
Label1.Text = GridView1.Rows[0].Cells[0].Text;
تموم شد ... البته تو صفحه news1 تو فقط یک لیبل داری ... حالا اگه یک کاربر روی هر کدوم از هایپرلینکهای
صفحه news کلیک کنه ، id اون هایپر که در واقع id خبر مورد نظر هستش به صفحه news1 فرستاده میشه و از طریق این id تو صفحه news1 متن خبر مربوطه از پایگاه داده انتخاب و تو همون 1 لیبل نمایش داده میشه ... امیدوارم منظورمو متوجه شده باشی ... بای
متاسفانه در جریان کدهایی که دوستان گذاشتند نیستم ولی فک کنم مشکلتون رو این برطرف کنه
ببینید صفحه اول رو در نظر بگیرید فرض کنید که یه سری عنوان خبر و ID رو از بانک می گیرید
کد ها تون در صفحه اول باید یه چیزی شبیه به این باشه
ProtectedSub Page_Load(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Load
dim i as integer=0
Dim strOutPut as String=string.empty
لینکاتون اینجا ساخته میشن کافیست جای عنوان و لینک رو به طور مناسب جایگزین کنید
for i= 1 to 10
strOutPut +="<href url='news.aspx?newsID="+i.tostring()+"'>"+"title"+ i.tostring()+"</a>"
next
Response.Write("strOutPut ")
END SUB
تا اینجا شما لینکایی می سازه که واسه هر خبر یه آی دی خاص داره
حالا صفحه دوم که همون news.aspx
ProtectedSub Page_Load(ByVal sender AsObject, ByVal e As System.EventArgs) HandlesMe.Load
'get news ID from first page
Dim id AsString = Page.Request.QueryString.Get("newsId")
'read news with same newsID from database for example
'you have a sql command like this
"select * from [newsTable] where newsID='"+Id.+"'"
EndSub
به همین راحتی ! به سیشن و .... نیازی نیست!
شما کد رو بگیر به دلخواه خودتون تغییرش بدهفكر نميكنم انتقال ID خبر با Session كار منتقي باشه
من هم می دونم فقط می خواستم یه کد برای راهنمایی بیاد دستشونبه سیشن و .... نیازی نیست!
بای
ببخشید پروژه من به زبون vb استتو ادامه کدهای #c مربوط به صفحه news مینویسی >>>
و از دیتابیس sol server استفاده میکنم
بابا گیر نده
اینم تغییر زبان به vb.net
بای
مشکلم حل شد از همه شما متشکرم
با سلام دوباره
مشکل قبلیم حل شد حالا یه مشکله دیگه ای که دارم این که مثلا تو منوهای من قسمت های مختلف مثل کامپیوتر - اینترنت و ... دارم که میخوام وقتی روی یکی از این لینک ها کلیک میشه اخبار مربوط به اون تو صفحه ی اخبار نشون داده بشه
خوب مشکلت چیه؟
شما باید برای هر کدوم یه ایدی بزاری بعد اونو در صفحه دوم تحلیل کنی و نشون بدی
واضح تر بگو مشکلت چیه؟
بای
میخوام وقتی رو لینک کامپیوتر کلیک میشه اطلاعات مربوط به کامپیوتر که تو بانک هست تو صفحه news.aspx که قبلا ساخته بودم نشون داده بشه
خوب لینک کامپیوتر رو این طوری بزار:
بعد بگو اگه ایدی یک بود اطلاعات بیرون بکشnews.aspx?id=1
بایif request("id")=1 then
'code
else
'code
end if
بايد تو صفحه اي كه ليست اخبار رو نشون ميدي؛ يك شرط بگذاري كه يا همه رو نشون بده يا يك دسته رو
if (Request.QueryString["Type"]==null)
{
SqlCommand = "select * From [news]";
}
else
{
int tmpNewsType = int.parse(Request.QueryString["Type"].ToString());
SqlCommand = "select * From [news] where [newsType]=" + tmpNewsType;
}
ببخشيد باز با #C هستش
دوست عزیز تو لینک دادن مشکلی ندارم فقط چطور باید اطلاعات رو نشون بدم مشکل دارم
تو پست های قبلی هم دوستان زحمت کشیدند راهنمایی کرد ولی باز هم همون مشکل رو دارم مثلا به بخش کامپیوتر لینک news.aspx?id=1 رو دادم و تو صفحه news کد هایی رو که دوستان مطرح کردن رو به کار بردم ولی هیچ تغییری نمیکنه و کل اطلاعات موجود تو جدول رو نشون میده به جای اینکه اطلاعات بخش کامپیوتر رو فقط نشون بده
شما اول باید صورت مساله رو کامل تجزیه کنید بعد برین دنبال کد. روند پست های شما نشون میده که تو الگوریتم این کار مشکل دارید نه تو استفاده از کد!
ساختار دیتابیستون رو در نظر داشته باشین! منظور شما از id چی هست؟ بخش کامپیوتر یعنی چی؟ شما با استفاده از اون id انتخاب هاتون رو محدود میکنید. اگر میخواین فقط کامپیوتر رو انتخاب کنید پس باید اون فیلدی که در جدول در بردارنده ی نوع بخش هست رو برابر با کامپیوتر بذارید.
اینجوری یه دفعه نمیشه رفت تو کدنویسی. یه بار از اول بررسی کن ببین چرا بعد از 29 تا پست این مساله هنوز حل نشده و شما برگشتی به همون مشکل اول!
موفق باشی.
اینم یه کد عالی با راهنمایی فارسی
موفق باشیdim i as integer
i=request(id").tostring
dim con="your connction"
dim s="select * from ttt where id=@id"
con.open
dim ad as new sqladabtor(s,con)
dim ds as new dataset
ad.fill(ds,"news")
dim dg as new datagrid
dg.datasource=ds.table("news")
dg.bind()
به جای بنویسم خط 1 و.. نوشتم 1 و...
1- متغیر تعریف کردیم
2-id رو که کرفتیم به متغییر می دیم
3-کانکشن رو تعریف می کنیم
4-کواری
5-کانکشن باز
6-یه اداپتور
7-یه دیتاست
8-دیتاست پر می کنیم
9-یه دیتا گرید
10-ربط دیتاست به دیتا گرید
11-دیتاگرید پر شه
ممکنه که توی نوشتن کدها اشتباه تایپی باشه که ببخشید
بای
با سلام
لطفا به تصاویر نگاه کنید تا مشکل منو حل کنید
ببینید تصویر یک الان صفحه نخست هست میخوام وقتی رو گزینه ای که اطراف اون قرمز شده کلیک میشه تو صفحه news داخل گریدویو ( تصویر 2 ) اصلاعات مربوط به اون نشون داده بشه و بقیه قسمتها هم همچنین
حالا کدی که باعث میشه طبق آدرس لینک محتویات داخل گریدویو تغییر کنه رو میخوام
با تشکر
ساختار جداول؟!!
یه فیلد به نام NewsType بهش اضافه کن و در لحظه ی Insert یه ComboBox بزار که کاربر نوع خبر رو از تو اون انتخاب کنه. حالا موقع نمایش وقتی کاربر مثلا رو لینک کامپیوتر کلیک میکنه شما این کامپیوتر رو پاس میدی به صفحه ی نمایش اخبار و اونو در شرط اون کوئری میذاری و اخبار مربوط به اون نوع خبر رو Select میکنی.
string _NewsType = Request.QueryString["Type"].ToString();
SqlCommand = "select * From [news] where [NewsType]=" + _NewsType;
با تشکر از جوابتون ولی من میخوام نوع اخبار رو از منو انتخاب کنم نه از combo box و در تصاویر بالا هم اشاره کردم به این موضوع
ببینم کاربر چه جوری درج خبر میکنه؟!!
من گفتم در لحظه Insert یه Combo box بذار که کاربر نوع خبری که میخواد New کنه رو مشخص کنه! اینجوری هر ردیف که در جدول درج میشه یه فیلد داره به نام NewsType که Value این فیلد معرف نوع خبر هست این مقادیری که در Combo box قرار میدی و بعنوان Value اون فیلد در جدول درج میشه باید همون آیتم های منوهای شما باشن.
وقتی کاربر روی منوی کامپیوتر کلیک میکنه شما به یه صفحه ی دیگه که نمایش خبر اونجا انجام میگیره ریدایرکت میکنی. محتوای منوی کلیک شده رو هم در قالب کوئری استرینگ در انتهای Url ای که میخوای بهش ریدایرکت کنی مینویسی.
این کدها رو در PageLoad صفحه ای که بهش ریدایرکت کردی مینویسی و با خوندن کوئری استرینگ در خط اول به نوع خبر پی میبری (در اینجا کامپیوتر رو مثال زدم) بعد در خط دوم اخباری رو که نوع خبرشون برابر با NewsType_ هست (در اینجا کامپیوتر) انتخاب میکنی و در یه دیتالیست یا گریدویو نشون میدی.