PDA

View Full Version : سوال: نحوه آدرس دهی به صفحات



arta.nasiri
شنبه 12 مرداد 1387, 13:49 عصر
با سلام به دوستان عزیز

سوال من این بود که چطور میشه به صفحات اینجور لینک داد news.aspx?id=1 مثلا یه صفحه با نام news دارم که لینک اخبار توی اون هست حالا چطور میشه مثلا به اخبار اول لینک news.aspx?id=1 و بقیه اخبار رو هم همین طور لینک داد
با تشکر

milade
شنبه 12 مرداد 1387, 14:09 عصر
خوب این طوری شما دو تا کار می تونید بکنید.
1- با استفاده از دیتابس
2- با استفاده از صفحات از پیش نوشته شده
حالا شما کدوم رو می خوایید؟
بای

arta.nasiri
شنبه 12 مرداد 1387, 16:31 عصر
ميخوام با استفاده از ديتابس باشه

salehbagheri
شنبه 12 مرداد 1387, 16:39 عصر
ببين دااااش!
توي صفحه News دو تا پنل ايجاد مي كني! (يكي پيدا و يكي پنهان) و توي هر پنل يه SqlDatasource

توي پنل پيدا يه گرايدويو ايجاد كن و تيتر خبرها رو بهش اتصال بده!

بعد توي پنل پنهان يه ديتيل ويو يا هرچيز ديگه اي ايجاد كن! بعد يه كدي شبيه به اين تو قسمت Load صفحه قرار بده:



Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Panel2.Visible = False
Dim id As String = Page.Request.QueryString.Get("newsId")
If Not id Is Nothing Then
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")
End Try
End If
End Sub

arta.nasiri
دوشنبه 14 مرداد 1387, 11:11 صبح
خب دوست عزیز این کار ها رو کردم ولی تو صفحه چیزی دیده نمیشه

DotNet_King
دوشنبه 14 مرداد 1387, 12:27 عصر
خب دوست عزیز این کار ها رو کردم ولی تو صفحه چیزی دیده نمیشه

ببینید دوست عزیز
شما باید لینک ها رو تو صفجه اول درست کنی مثلا همون که گفتی و آی دی هر خبر رو به آخر url همون طوری بچسبونی

تو صفحه دوم مثلا اخبار با نیوز آی دی رو بگیرید و حالا تو اون با اون آی دی خبر ! خبر رو از بانک یا فایل و یا ... لود کنید!!

مشکلی نمی مونه دیگه:متفکر:

mr_mtc
دوشنبه 14 مرداد 1387, 12:30 عصر
شما بايد تو GridView پنل اول عنوان صفحه ات رو به صورت لينك نمايش بدي~/news.aspx?ID={0}

و با استفاده از كد salehbagheri خبرت رو فراخواني كن

البته فراموش نشه كه زماني كه ميخواي خبر رو نشان بدي بايد پنل اول رو مخفي و پنل دوم رو نمايش بدي؛ ميتوني بوسيله QueryString[ID] چك كني

پ.ن: انگاري راهنمايي من خيلي زمانبر بود

arta.nasiri
دوشنبه 14 مرداد 1387, 17:10 عصر
ببینید دوست عزیز
شما باید لینک ها رو تو صفجه اول درست کنی مثلا همون که گفتی و آی دی هر خبر رو به آخر url همون طوری بچسبونی



با سلام
اینیکه شما میگید آی دی هر خبر رو به آخر url همون طوری بچسبونید باید دستی انجام بدم
یا نه به طور اتوماتیک میشه آدرس داد



تو صفحه دوم مثلا اخبار با نیوز آی دی رو بگیرید و حالا تو اون با اون آی دی خبر ! خبر رو از بانک یا فایل و یا ... لود کنید!!


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


ببینید دوستان من دو صفحه دارم به نام های news.aspx و news1.aspx و میخوام لینک اخبار تو صفحه news باشه و لینک هم به این شکل news1.aspx?id=1 و وقتی روی لینک کلیک میکنم تو صفحه news1.aspx نشون داده بشه

با تشکر چون تازه واردم اشکال خیلی پیش میاد

milade
دوشنبه 14 مرداد 1387, 17:26 عصر
سلام
حالا کد می خوای که برات بنویسم؟(اطلاعات دیگه نمی خوای بدی؟ sql باشه چی باشه)
بای

arta.nasiri
دوشنبه 14 مرداد 1387, 17:35 عصر
سلام
حالا کد می خوای که برات بنویسم؟(اطلاعات دیگه نمی خوای بدی؟ sql باشه چی باشه)
بای

با تشکر
میخوام sql باشه

milade
دوشنبه 14 مرداد 1387, 17:43 عصر
ببین یه فایل گزاشتم
http://www.barnamenevis.org/forum/showthread.php?t=116433
نظرت رو هم بگو
انتقال با session
خیلی هم ساده است (به درد خودت می خوره)
بای

mr_mtc
دوشنبه 14 مرداد 1387, 17:51 عصر
شما بايد تو GridView پنل اول عنوان صفحه ات رو به صورت لينك نمايش بدي~/news.aspx?ID={0}

و با استفاده از كد salehbagheri خبرت رو فراخواني كن

البته فراموش نشه كه زماني كه ميخواي خبر رو نشان بدي بايد پنل اول رو مخفي و پنل دوم رو نمايش بدي؛ ميتوني بوسيله QueryString[ID] چك كني


اين كه خيلي ساده است.

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 هست

mr_mtc
دوشنبه 14 مرداد 1387, 17:56 عصر
انتقال با session

فكر نميكنم انتقال ID خبر با Session كار منتقي باشه

arta.nasiri
دوشنبه 14 مرداد 1387, 18:04 عصر
3- تو همون صفحه يا صفحه بعد چك كن كه QueryString با نام newsID پر هست يا نه؛ اگه پره به وسيله اون از بانكت Select كن و خبر رو به وسيله DetailView نمايش بده

com = "Select * from[News] where NewsID = Request.QueryString["newsID"]
البته بهتره براي Select بانك از QueryString استفاده نكني و اونو قبلش تو يك متغير بريزي و مقدارش رو چك كني

حالا كجاش نامفهومه؛ توضيح بدم
البته كدها با CSharp هست

یه خورده زیاد توضیح بده
البته اگه با vb باشه بهتره

arta.nasiri
دوشنبه 14 مرداد 1387, 18:09 عصر
مشکلم داره حل میشه فقط اینکه تو صفحه بعد چطور نمایش بدم

در ضمن سوال دیگه ای داشتم اینکه اینجور لینک ها رو فقط تو دیتاویو می تونیم ایجاد کنیم یا بین متن نیز می توان ساخت

Himalaya
دوشنبه 14 مرداد 1387, 18:50 عصر
ببین من از این روش استفاده کردم جواب هم داده ... برای دیتابیس اکسس هم هستش
فرض کنیم میخوای عنوان خبرهات رو تو صفحه 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) + "&nbsp;<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:QueryStringParameter Name="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 لیبل نمایش داده میشه ... امیدوارم منظورمو متوجه شده باشی ... بای

DotNet_King
دوشنبه 14 مرداد 1387, 19:09 عصر
متاسفانه در جریان کدهایی که دوستان گذاشتند نیستم ولی فک کنم مشکلتون رو این برطرف کنه


ببینید صفحه اول رو در نظر بگیرید فرض کنید که یه سری عنوان خبر و 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




به همین راحتی ! به سیشن و .... نیازی نیست!

milade
دوشنبه 14 مرداد 1387, 19:30 عصر
فكر نميكنم انتقال ID خبر با Session كار منتقي باشه
شما کد رو بگیر به دلخواه خودتون تغییرش بده

به سیشن و .... نیازی نیست!
من هم می دونم فقط می خواستم یه کد برای راهنمایی بیاد دستشون
بای

arta.nasiri
دوشنبه 14 مرداد 1387, 19:47 عصر
تو ادامه کدهای #c مربوط به صفحه news مینویسی >>>


ببخشید پروژه من به زبون vb است
و از دیتابیس sol server استفاده میکنم

milade
دوشنبه 14 مرداد 1387, 19:52 عصر
بابا گیر نده
اینم تغییر زبان به vb.net (http://labs.developerfusion.co.uk/convert/csharp-to-vb.aspx)
بای

arta.nasiri
دوشنبه 14 مرداد 1387, 20:10 عصر
مشکلم حل شد از همه شما متشکرم

arta.nasiri
سه شنبه 15 مرداد 1387, 11:16 صبح
با سلام دوباره

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

milade
سه شنبه 15 مرداد 1387, 11:31 صبح
خوب مشکلت چیه؟
شما باید برای هر کدوم یه ایدی بزاری بعد اونو در صفحه دوم تحلیل کنی و نشون بدی
واضح تر بگو مشکلت چیه؟
بای

arta.nasiri
سه شنبه 15 مرداد 1387, 11:40 صبح
میخوام وقتی رو لینک کامپیوتر کلیک میشه اطلاعات مربوط به کامپیوتر که تو بانک هست تو صفحه news.aspx که قبلا ساخته بودم نشون داده بشه

milade
سه شنبه 15 مرداد 1387, 11:46 صبح
خوب لینک کامپیوتر رو این طوری بزار:

news.aspx?id=1
بعد بگو اگه ایدی یک بود اطلاعات بیرون بکش

if request("id")=1 then
'code
else
'code
end if
بای

mr_mtc
سه شنبه 15 مرداد 1387, 12:12 عصر
بايد تو صفحه اي كه ليست اخبار رو نشون ميدي؛ يك شرط بگذاري كه يا همه رو نشون بده يا يك دسته رو



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 هستش

arta.nasiri
سه شنبه 15 مرداد 1387, 12:51 عصر
بايد تو صفحه اي كه ليست اخبار رو نشون ميدي؛ يك شرط بگذاري كه يا همه رو نشون بده يا يك دسته رو



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 هستش

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

DotNet_King
سه شنبه 15 مرداد 1387, 13:53 عصر
با سلام دوباره

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


دوست من موضوعو خیلی پیچیده کردی ها :متعجب:

یه پیشنهاد اونهم اینکه رو مطالبی که تا حالا عنوان شد وقت بزارید و بررسی اش کنید. مشکلی نمی مونه دیگه :اشتباه:
به نظر من بهتره وقت بزارید و کد ها رو خوب بررسی کنید . در عوض دیگه دفعات بعد مشکلی نداری

arta.nasiri
سه شنبه 15 مرداد 1387, 17:11 عصر
دوست من موضوعو خیلی پیچیده کردی ها :متعجب:

یه پیشنهاد اونهم اینکه رو مطالبی که تا حالا عنوان شد وقت بزارید و بررسی اش کنید. مشکلی نمی مونه دیگه :اشتباه:
به نظر من بهتره وقت بزارید و کد ها رو خوب بررسی کنید . در عوض دیگه دفعات بعد مشکلی نداری

دوست عزیز تو لینک دادن مشکلی ندارم فقط چطور باید اطلاعات رو نشون بدم مشکل دارم
تو پست های قبلی هم دوستان زحمت کشیدند راهنمایی کرد ولی باز هم همون مشکل رو دارم مثلا به بخش کامپیوتر لینک news.aspx?id=1 رو دادم و تو صفحه news کد هایی رو که دوستان مطرح کردن رو به کار بردم ولی هیچ تغییری نمیکنه و کل اطلاعات موجود تو جدول رو نشون میده به جای اینکه اطلاعات بخش کامپیوتر رو فقط نشون بده

m.hamidreza
سه شنبه 15 مرداد 1387, 21:27 عصر
دوست عزیز تو لینک دادن مشکلی ندارم فقط چطور باید اطلاعات رو نشون بدم مشکل دارم
تو پست های قبلی هم دوستان زحمت کشیدند راهنمایی کرد ولی باز هم همون مشکل رو دارم مثلا به بخش کامپیوتر لینک news.aspx?id=1 رو دادم و تو صفحه news کد هایی رو که دوستان مطرح کردن رو به کار بردم ولی هیچ تغییری نمیکنه و کل اطلاعات موجود تو جدول رو نشون میده به جای اینکه اطلاعات بخش کامپیوتر رو فقط نشون بده

شما اول باید صورت مساله رو کامل تجزیه کنید بعد برین دنبال کد. روند پست های شما نشون میده که تو الگوریتم این کار مشکل دارید نه تو استفاده از کد!
ساختار دیتابیستون رو در نظر داشته باشین! منظور شما از id چی هست؟ بخش کامپیوتر یعنی چی؟ شما با استفاده از اون id انتخاب هاتون رو محدود میکنید. اگر میخواین فقط کامپیوتر رو انتخاب کنید پس باید اون فیلدی که در جدول در بردارنده ی نوع بخش هست رو برابر با کامپیوتر بذارید.
اینجوری یه دفعه نمیشه رفت تو کدنویسی. یه بار از اول بررسی کن ببین چرا بعد از 29 تا پست این مساله هنوز حل نشده و شما برگشتی به همون مشکل اول!
موفق باشی.

milade
چهارشنبه 16 مرداد 1387, 07:45 صبح
اینم یه کد عالی با راهنمایی فارسی

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-دیتاگرید پر شه
ممکنه که توی نوشتن کدها اشتباه تایپی باشه که ببخشید
بای

arta.nasiri
چهارشنبه 16 مرداد 1387, 12:15 عصر
با سلام

لطفا به تصاویر نگاه کنید تا مشکل منو حل کنید

ببینید تصویر یک الان صفحه نخست هست میخوام وقتی رو گزینه ای که اطراف اون قرمز شده کلیک میشه تو صفحه news داخل گریدویو ( تصویر 2 ) اصلاعات مربوط به اون نشون داده بشه و بقیه قسمتها هم همچنین

حالا کدی که باعث میشه طبق آدرس لینک محتویات داخل گریدویو تغییر کنه رو میخوام

با تشکر

m.hamidreza
چهارشنبه 16 مرداد 1387, 20:26 عصر
ساختار جداول؟!!

arta.nasiri
پنج شنبه 17 مرداد 1387, 10:56 صبح
ساختار جداول؟!!

متوجه نشدم

DotNet_King
پنج شنبه 17 مرداد 1387, 14:24 عصر
متوجه نشدم


یعنی تو بانک اطلاعاتی ات چه جداولی داری؟ اسم جدول و بعد فیلدهای توش رو اینجا بزارید:لبخندساده:

arta.nasiri
پنج شنبه 17 مرداد 1387, 18:22 عصر
یعنی تو بانک اطلاعاتی ات چه جداولی داری؟ اسم جدول و بعد فیلدهای توش رو اینجا بزارید:لبخندساده:

با سلام ببخشید بیشتر زحمت میدم

نام جدول tbl_news
نام فیلدها : titel از نوع text
news از نوع text
createdata از نوع datetime
postby از نوع text
pic هز نوع image
ID از نوع numeric(18, 0)

m.hamidreza
پنج شنبه 17 مرداد 1387, 23:24 عصر
یه فیلد به نام NewsType بهش اضافه کن و در لحظه ی Insert یه ComboBox بزار که کاربر نوع خبر رو از تو اون انتخاب کنه. حالا موقع نمایش وقتی کاربر مثلا رو لینک کامپیوتر کلیک میکنه شما این کامپیوتر رو پاس میدی به صفحه ی نمایش اخبار و اونو در شرط اون کوئری میذاری و اخبار مربوط به اون نوع خبر رو Select میکنی.


string _NewsType = Request.QueryString["Type"].ToString();
SqlCommand = "select * From [news] where [NewsType]=" + _NewsType;

arta.nasiri
جمعه 18 مرداد 1387, 11:50 صبح
با تشکر از جوابتون ولی من میخوام نوع اخبار رو از منو انتخاب کنم نه از combo box و در تصاویر بالا هم اشاره کردم به این موضوع

arta.nasiri
جمعه 18 مرداد 1387, 18:09 عصر
string _NewsType = Request.QueryString["Type"].ToString();
SqlCommand = "select * From [news] where [NewsType]=" + _NewsType;


خب دوست عزیز از راهنمایی تون متشکرم یه راهنمایی کوچیک میخوام اینکه این کدها رو باید کجا بنویسم

m.hamidreza
جمعه 18 مرداد 1387, 18:42 عصر
با تشکر از جوابتون ولی من میخوام نوع اخبار رو از منو انتخاب کنم نه از combo box و در تصاویر بالا هم اشاره کردم به این موضوع

ببینم کاربر چه جوری درج خبر میکنه؟!!
من گفتم در لحظه Insert یه Combo box بذار که کاربر نوع خبری که میخواد New کنه رو مشخص کنه! اینجوری هر ردیف که در جدول درج میشه یه فیلد داره به نام NewsType که Value این فیلد معرف نوع خبر هست این مقادیری که در Combo box قرار میدی و بعنوان Value اون فیلد در جدول درج میشه باید همون آیتم های منوهای شما باشن.


خب دوست عزیز از راهنمایی تون متشکرم یه راهنمایی کوچیک میخوام اینکه این کدها رو باید کجا بنویسم

وقتی کاربر روی منوی کامپیوتر کلیک میکنه شما به یه صفحه ی دیگه که نمایش خبر اونجا انجام میگیره ریدایرکت میکنی. محتوای منوی کلیک شده رو هم در قالب کوئری استرینگ در انتهای Url ای که میخوای بهش ریدایرکت کنی مینویسی.
این کدها رو در PageLoad صفحه ای که بهش ریدایرکت کردی مینویسی و با خوندن کوئری استرینگ در خط اول به نوع خبر پی میبری (در اینجا کامپیوتر رو مثال زدم) بعد در خط دوم اخباری رو که نوع خبرشون برابر با NewsType_ هست (در اینجا کامپیوتر) انتخاب میکنی و در یه دیتالیست یا گریدویو نشون میدی.

arta.nasiri
جمعه 18 مرداد 1387, 19:00 عصر
ببخشید جلوی کوئری استرینگ که نوشتید Type اونجا باید مثلا بعد ؟ هر چی هست اون بنویسم مثلا بعد از ؟ من نوشتم ID که باید جایگزین Type کنم

در ضمن کد هم هیچ عملی نمیکنه

arta.nasiri
جمعه 18 مرداد 1387, 19:21 عصر
اگه بخوام نوع اخبار رو از داخل combo box انتخاب کنم چه کدی لازم است

DotNet_King
جمعه 18 مرداد 1387, 20:20 عصر
یه فیلد به نام NewsType بهش اضافه کن و در لحظه ی Insert یه ComboBox بزار که کاربر نوع خبر رو از تو اون انتخاب کنه. حالا موقع نمایش وقتی کاربر مثلا رو لینک کامپیوتر کلیک میکنه شما این کامپیوتر رو پاس میدی به صفحه ی نمایش اخبار و اونو در شرط اون کوئری میذاری و اخبار مربوط به اون نوع خبر رو Select میکنی.


string _NewsType = Request.QueryString["Type"].ToString();
SqlCommand = "select * From [news] where [NewsType]=" + _NewsType;



ببین دوست عزیزم . سعی کن یه کم خودتو در گیر این مسائل بکنی. به خدا اولش یه کم سخته بعدش از آب خوردن برات راحتر تر میشه. این مدلی که داری میای خلاقیتت رو از دست میدی ها. من خودم تازه کارم و قصد توهین به شما رو ندارم ولی یه توصیه برادرانه ! اینکه وقت بزار و صحبت هایی که دوستان تا حالا کردن رو بررسی کن مطمئنا مشکلی ندارید. واقعا جواب گفته شده تا حالا

ببین می خواهی کاربر نوع خبر رو از کومبو بخونه
کومبو چی داره:لبخندساده:
یه پارامتر تکست که رو صفحه نشون می ده
یه پارامتر value که مقدار سطر انتخابی رو بر می گردونه

شما یه جدول جدید تو بانکتون درست کنید با دو تا ستون
-------------------------------------
news_ID شماره مشخصه هر خبرت
News_name اون عنوانی که از هر خبر می خواهی رو صفحه نشون بدی بعد این طوری پرش کن
-----------------------
مثلا
100 sports
101 IT
102 computer
103 politic
و ....

حالا از درون برنامه ات با کویری زیر یه کومبو باکست رو پر کن

مثلا من این کار رو کردم


sqlCommand = "select NEWS_ID,News_name Form Tbl_News_Kind
.
.
.
.

Da = New SqlDataAdapter(Cmd)
Ds = New DataSet
Da.Fill(Ds, "tblFieldList")
DrpField.DataSource = Ds.Tables(0).DefaultView
DrpField.DataTextField = "News_name"
DrpField.DataValueField = "NEWS_ID"
DrpField.DataBind()
BindGridView()




با این کار drpField که میتونه کومبو خبرت باشه رو پر می کنی ! حالا آی دی هر خبر رو که ماربر انتخاب می کنه به این صورت بدست میاری و با روش دوستمون ادامه می دی


جدول دومتون به این صورت باشه من فک می کنم بهتره

آی دی نوع خبر
شماره خاص هر خبر ! میتونه اتو نامبر باشه ! البته میتونی نزاریش
خوده خبر
createdata از نوع datetime
postby از نوع text
pic هز نوع image





string _NewsType = DrpFac.SelectedValue.Trim()
.();
SqlCommand = "select * From [news] where [NewsType]=" + _NewsType




امید وارم دیگه مشکلتون کامل حل شده باشه

arta.nasiri
جمعه 18 مرداد 1387, 21:04 عصر
واقعا یه نفر میخواد بشینه منو اینطوری نصیحت بکنه

arta.nasiri
جمعه 18 مرداد 1387, 21:50 عصر
دوست عزیز مشکل من اینجا هست که نمیتون آی دی هر خبر رو به گریدویو پاس بدم

DotNet_King
جمعه 18 مرداد 1387, 23:21 عصر
ای بابا شما آی دی رو به گرید ویو پاس نمی دی که ! به کوئری میدی!
همون cmd
اونهم به این صورت


string _NewsType = DrpFac.SelectedValue.Trim()
.();
SqlCommand = "select * From [news] where [NewsType]=" + _NewsType


می بخشی که می پرسم ولی اصلا تا حالا با همچین چیزی کار کردی؟

بقیه کاراش بایندینگه ! دیتا آداپتور و دیتاست و ...!!! شاید از ویزاردی چیزی استفاده می کنه دوست عزیز!! نکن که بده! جنایته!!
به خدا همین امروز رو این موضوع کار کردم با همون کد جواب میده! من واقعا گیج شدم شاید منظورتون رو نفهمیدم!

بای

arta.nasiri
شنبه 19 مرداد 1387, 11:11 صبح
نه آقا شما منظور منو فهمیدید چون من اولین بارمه با asp.net کار میکنم به خاطر همینه
اگر هم یه کتاب آموزشی خوب سراغ دارین بگین تا استفاده بکنم

arta.nasiri
شنبه 19 مرداد 1387, 11:42 صبح
بقیه کاراش بایندینگه ! دیتا آداپتور و دیتاست و ...!!!

خب دوست عزیز یه راهنمایی در مورد بایند - دیتا آداپتور و دیتاست بکن که کار اینها چی هست
مثلا تو کد بالا نوشته بودی



DrpField.DataBind()
BindGridView()


داخل پرانتز ها چی باید بنویسم

arta.nasiri
شنبه 19 مرداد 1387, 12:07 عصر
ای بابا شما آی دی رو به گرید ویو پاس نمی دی که ! به کوئری میدی!
همون cmd
اونهم به این صورت


string _NewsType = DrpFac.SelectedValue.Trim()
.();
SqlCommand = "select * From [news] where [NewsType]=" + _NewsType





خب DotNet_king جان این کد ها رو باید کجا بنویسم تو code behind یا همون صفحه aspx

arta.nasiri
شنبه 19 مرداد 1387, 12:27 عصر
sqlCommand = "select NEWS_ID,News_name Form Tbl_News_Kind
.
.
.
.

Da = New SqlDataAdapter(Cmd)
Ds = New DataSet
Da.Fill(Ds, "tblFieldList")
DrpField.DataSource = Ds.Tables(0).DefaultView
DrpField.DataTextField = "News_name"
DrpField.DataValueField = "NEWS_ID"
DrpField.DataBind()
BindGridView()




دوست من مشکل من اینجا هست که نمیدونم کد ها رو کجا بنویسم تو code behind یا صفحه aspx
من این کد رو تو صفحه aspx نوشتم کومبو از کار افتاد و تو code behind نوشتم به cmd خطا میده آیا به جای cmd باید چیز دیگه بنویسم یا باید اونو تعریف کنم

DotNet_King
شنبه 19 مرداد 1387, 15:18 عصر
سلام
فک کنم با این کار راه بیافته
نمی خواد فعلا کومبو رو خودکار پر کنی

یه صفحه جدید به پروژه ات اضافه کن
بعد این طوری پرش کن همون کپی پیست خودمون از نوع کامل!




<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="Default.aspx.vb" Inherits="Tamper_WEB_SITE._Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Untitled Page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:dropdownlist ID="Drp_news_kind" runat="server" AutoPostBack="True">
<asp:ListItem Value="101">کامپیوتر</asp:ListItem>
<asp:ListItem Value="102">آی تی</asp:ListItem>
<asp:ListItem Value="103">ورزشی</asp:ListItem>
<asp:ListItem Value="104">سیاسی</asp:ListItem>
<asp:ListItem Value="105">هنری</asp:ListItem>
<asp:ListItem Value="106">هر مدل دیگه</asp:ListItem>
</asp:dropdownlist>
</div>
</form>
</body>
</html>



حالا برو تو کد بی هایند یا هر جایی که اسکریپت ها صفحه ات رو وارد می کنی اینو اضافه کن





Protected Sub Drp_news_kind_SelectedIndexChanged(ByVal sender As Object, ByVal e As EventArgs) Handles Drp_news_kind.SelectedIndexChanged
Response.Write("you are select this Item" + Drp_news_kind.SelectedItem.Text + "<br>and this you can obtine Data with Below query from database :")
Response.Write("Select * from News_table Where News_ID='" + Drp_news_kind.SelectedValue.ToString() + "'")
End Sub




حواست باشه که آی دی اخبار تو بانکت 101 و .... به بعد باشه مطابق لیست آیتم ها

نتیجه اش کوئریست که تو تصویر می بینی
از اینجا به بعدش رو هم که خودت اوستایی!!! یه ارتباط با بانکه ساده است

DotNet_King
شنبه 19 مرداد 1387, 15:26 عصر
شرمنده این هم تصویر ضمیمه که یادم رفته بود

arta.nasiri
شنبه 19 مرداد 1387, 18:13 عصر
خب دوست عزیز همون طور که گفتی کردم یعنی کپی و پیست خودمون به طور کامل
ولی درست کار نکرد
لطفا به تصاویر زیر یه نگاه بکن

Himalaya
شنبه 19 مرداد 1387, 19:43 عصر
اول اینکه زیر قسمت undo (تو نوار ابزار) یه کمبو باکس هستش که توش نوشته XHTML 1.0
اونو تبدیلش کن به IE 6 تا حداقل اون خط های سبز رنگ محو بشن
دوم هم اینکه باباجون درسته که طرف گفته کپی کامل ، ولی حداقل کلمات کدها رو که به هم چسبیدن از هم جدا کن


<asp:dropdownlistID="Drp_news_kind"runat="server"AutoPostBack="True">

DotNet_King
یک شنبه 20 مرداد 1387, 00:01 صبح
اول اینکه زیر قسمت undo (تو نوار ابزار) یه کمبو باکس هستش که توش نوشته XHTML 1.0
اونو تبدیلش کن به IE 6 تا حداقل اون خط های سبز رنگ محو بشن
دوم هم اینکه باباجون درسته که طرف گفته کپی کامل ، ولی حداقل کلمات کدها رو که به هم چسبیدن از هم جدا کن


<asp:dropdownlistID="Drp_news_kind"runat="server"AutoPostBack="True">



ممنون از تذکرتون دوست عزیز

علاوه بر اون مشکلی که دوستمون گفتند من کد بیهایندم دیفالت نام داره! شما تو صفحه ای با اسم وب فرم 3 کپی کردید! و ...
والا دیگه بیشتر از این من چیزی یاد ندارم چون منهم تازه کارم:عصبانی:! آخه اون عکس نشون میده که اون کد رو کامپیوتر من ران شده و مشکل نداره! :عصبانی++::افسرده::ناراحت::اش باه:

arta.nasiri
یک شنبه 20 مرداد 1387, 11:35 صبح
دوست عزیز مشکلم حل شد و تونستم به دیتاویو ارتباط بدم
واقعا یه ذره تلاش میخواد بعدش دیگه...

و نمیدونم اینجا چطور از زحمات شما قدر دانی کنم

DotNet_King
یک شنبه 20 مرداد 1387, 11:56 صبح
موفق باشید!