PDA

View Full Version : انتقال اطلاعات به grideview در صفحه دیگر



baranbahari1320
دوشنبه 02 بهمن 1391, 22:25 عصر
من دارم جستجوی پیشرفته رو انجام میدم میخوام نتیجه جستجو در یه صفحه دیگه در datagrid قرار بگیره اما نمیدونم چه جوری حتی از qury string هم استفاده کردم اما جواب نگرفتم.یه چیزی میخوام مثل همین سایت که نتایج میره صفحه دیگه.
لطفا راهنمایی کنیم منو.

کد صفحه جستجو:
string conn = "server=(local);database=knews; Integrated security=SSPI;";
SqlConnection con = new SqlConnection(conn);
string date1 = DropDownList1.SelectedItem.ToString().Trim() + "/" + DropDownList2.SelectedItem.ToString().Trim() + "/" + DropDownList3.SelectedItem.ToString().Trim();
string date2 = DropDownList4.SelectedItem.ToString().Trim() + "/" + DropDownList5.SelectedItem.ToString().Trim() + "/" + DropDownList6.SelectedItem.ToString().Trim();
string command = "select * from tbknews where((accept='1') and (titlenews like'%" + TextBox2.Text + "%'))";
SqlCommand cmd = new SqlCommand(command, con);
con.Open();

SqlDataReader dr = cmd.ExecuteReader();

DataTable dt = new DataTable();
dt.Load(dr);
GridView2.DataSource = dt;
GridView2.DataBind();

con.Close();

malloc
دوشنبه 02 بهمن 1391, 22:56 عصر
یکم بیشتر توضیح بدید و ممنون میشم کدهاتونو بزارید تو تگ مربوطه که قابل فهم باشه و حوصله خوندنشم بیشتر بشه .

چرا query string جواب نداد ؟؟؟ راحلش همینه . شما ID اون فیلدی که میخوای و با querystring به صفحه مقصد پاس میدی و اونجا کاره سرچ و انجام میدی دیگه . مشکل کجاس ؟؟؟

baranbahari1320
دوشنبه 02 بهمن 1391, 22:59 عصر
اما من دارم از بانک میخونم با sqlcommand و sqldatareader

string conn = "server=(local);database=knews; Integrated security=SSPI;";
SqlConnection con = new SqlConnection(conn);
string date1 = DropDownList1.SelectedItem.ToString().Trim() + "/" + DropDownList2.SelectedItem.ToString().Trim() + "/" + DropDownList3.SelectedItem.ToString().Trim();
string date2 = DropDownList4.SelectedItem.ToString().Trim() + "/" + DropDownList5.SelectedItem.ToString().Trim() + "/" + DropDownList6.SelectedItem.ToString().Trim();
string command = "select * from tbknews where((accept='1') and (titlenews like'%" + TextBox2.Text + "%'))";
SqlCommand cmd = new SqlCommand(command, con);
con.Open();

SqlDataReader dr = cmd.ExecuteReader();

DataTable dt = new DataTable();
dt.Load(dr);
GridView2.DataSource = dt;
GridView2.DataBind();

con.Close();

این کد درون دکمه قرار داره میخوام وقتی رو دکمه کلیک میکنم بره صفحه بعد و نتیجه رو داخل graidview نمایش بده

morteza_mokhtari
دوشنبه 02 بهمن 1391, 23:02 عصر
سلام دوست عزیز شما برای اینکار یا باید از session استفاده کنید یا از query string .مثلا query string یه چیزی میشه شبیه این


www.example.ir/search.aspx?search=ali&dropdownlist=hasan

بعد اطلاعات رو تویه صفحه search.aspx از query string بگیرید و عمل جستجو رو انجام بدهید.

malloc
دوشنبه 02 بهمن 1391, 23:02 عصر
ممنون از توضیح بیشترتون !!!!
و ممنون از اینکه کدهاتونو تو تگ مربوطه گذاشتید !!!!
خوب تو صفحه مبدا لز بانک بخونید و ID مورد نظر و دربیارید و اون ID رو به صفحه مقصد پاس بدید و تو صفحه مقصد با اون ID کار کنید و select مربوطه رو بزنید

baranbahari1320
دوشنبه 02 بهمن 1391, 23:05 عصر
من با hyperlink این کار رو کردم اما اینجا واقعا گیج شدم.توی command با چیزی اضافه کنم؟قسمت مربوط به bindکردن اطلاعات به grideview رو تو مقصد چه جوری بنویسم.

myazdani
دوشنبه 02 بهمن 1391, 23:11 عصر
راهی که به نظر من می رسه اینه که جمله Commonad تون رو داخل یه Session بریزید و در صفحه جدید از مقدارش برای پر کردن dataSource تون استفاده کنید

baranbahari1320
دوشنبه 02 بهمن 1391, 23:25 عصر
خوب من تو صفحه مبدا این کد رو نوشتم داخل command

string conn = "server=(local);database=knews; Integrated security=SSPI;";
SqlConnection con = new SqlConnection(conn);
string date1 = DropDownList1.SelectedItem.ToString().Trim() + "/" + DropDownList2.SelectedItem.ToString().Trim() + "/" + DropDownList3.SelectedItem.ToString().Trim();
string date2 = DropDownList4.SelectedItem.ToString().Trim() + "/" + DropDownList5.SelectedItem.ToString().Trim() + "/" + DropDownList6.SelectedItem.ToString().Trim();
string command = "select * from tbknews where((accept='1') and (titlenews like'%" + TextBox2.Text + "%'))";
SqlCommand cmd = new SqlCommand(command, con);
con.Open();

SqlDataReader dr = cmd.ExecuteReader();


توی خود command هم این کد رو نوشتم

<asp:Button ID="Button2" runat="server" Text="جستجو بر اساس نوع خبر"
onclick="Button2_Click" PostBackUrl='<%# Eval("idnews","shownews.aspx?code={0}") %>' />

تو صفحه مقصد هم این کار رو کردم.

protected void Page_Load(object sender, EventArgs e)
{
SqlConnection con = new SqlConnection("server=(local);database=knews; Integrated security=SSPI;");
string query = "select * from tbknews where idnews=@idnews";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@idnews",Request.QueryString["code"]);
con.Open();
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dr.Read();
dt.Load(dr);

GridView1.DataSource = dt;

GridView1.DataBind();
dr.Close();

حالا این error ro mide



The parameterized query '(@idnews nvarchar(4000))select * from tbknews where idnews=@idne' expects the parameter '@idnews', which was not supplied.

malloc
دوشنبه 02 بهمن 1391, 23:33 عصر
شاید من متوجه نمیشم یا بلد نیستم اما میشه بگی کجای کدهایی که نوشتی به {0} مقدار میدی

baranbahari1320
دوشنبه 02 بهمن 1391, 23:50 عصر
خوب از همون اولین مقدار شروع میکنه به نمایش اطلاعاتی که با idnewswsh با این idnews میخونه.
من اینو با hypelink انجام دادم مشکلی نداره.

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

malloc
سه شنبه 03 بهمن 1391, 00:03 صبح
شما خط زیر و بصورت زیر تغییر بده ببین حاصلی ایجاد میشه :
cmd.Parameters.AddWithValue("@idnews",int.Parse(Request.QueryString["code"]));

baranbahari1320
سه شنبه 03 بهمن 1391, 00:11 صبح
خطا میده
Value cannot be null.
Parameter name: String

malloc
سه شنبه 03 بهمن 1391, 00:15 صبح
ببین دوست عزیز من پروژه شما دستم نیست و با جزئیات نمیتونم کمک کنم . بهترین کمک اینه که پروژه رو با یه break point اجرا کنی و خط به خط بری جلو ببینی مقدار اون query string چی میشه و بکجا میرسه و چرا خطا میده .