PDA

View Full Version : جستجو در گریدویو



pedram_ns
چهارشنبه 28 اردیبهشت 1390, 16:12 عصر
سلام
یک تکس باکس و یک گریدویو در صفحه دارم و می خوام با سرچ درون تکس باکس اطلاعاتی در گرید نشون بده.
این کار رو با امکانات خود گردیویو انجام دادم و کار می کنه.
چکار کنم که با لود صفحه و بدون سرچ همه اطلاعات رو نشون بده و با سرچ در تکس باکس اطلاعات سرچ شده رو؟

dontspeak
چهارشنبه 28 اردیبهشت 1390, 22:27 عصر
خوب همه اینایی رو که می خوای تو لود صفحه بنویس. می تونی یه session درست کنی. بعدم از شرط پست بک استفاده کنی.
موفق باشید

pedram_ns
پنج شنبه 29 اردیبهشت 1390, 10:25 صبح
وقتی با کدنویسی اینکار رو می کنم پیجینگ صفحه خوب کار نمی کنه.
مثلا وقتی با لود صفحه همه اطلاعات میاد پیجینگ درست کار می کنه ولی اگر با سرچ یکسری اطلاعات رو نشون بدم که چند صفحه ایی باشه با رفتن به صفحه دوم همه اطلاعات رو نشون میده.
چکار کنم که پیجینگ، همون اطلاعات سرچ شده رو صفحه بندی و نشون بده؟

alonemm
پنج شنبه 29 اردیبهشت 1390, 11:40 صبح
وقتی با کدنویسی اینکار رو می کنم پیجینگ صفحه خوب کار نمی کنه.
مثلا وقتی با لود صفحه همه اطلاعات میاد پیجینگ درست کار می کنه ولی اگر با سرچ یکسری اطلاعات رو نشون بدم که چند صفحه ایی باشه با رفتن به صفحه دوم همه اطلاعات رو نشون میده.
چکار کنم که پیجینگ، همون اطلاعات سرچ شده رو صفحه بندی و نشون بده؟
باسلام:
اگر کدتون رو بزارید بهتر راهنمایی میکنم.
اما میتونید با یک شرط چک کنید که صفحه Post Back شده یا نه و در اولین بار گرید رو به صورت معمولی بایند کنید و در صورت Post Back شدن به صورت اطلاعات جستجو شده بایند کنید.

dontspeak
پنج شنبه 29 اردیبهشت 1390, 11:48 صبح
منظورت اینه که می خوای توی همون صفحه نشون بده درسته؟ با این مشکل داری؟ این کدو وارد کردی؟
grade1.DataBind();
اگه مشکلت بازم ادامه داره کدای توی پیج لود و با اون کنترلی که سرچ رو انجام میده بزار

pedram_ns
پنج شنبه 29 اردیبهشت 1390, 13:46 عصر
شما یگ گریدویو، یک تکس باکس و یک دکمه در صفحه در نظر بگیرید
این کد صفحه است:


Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim con As New SqlConnection(WebConfigurationManager.ConnectionSt rings("ConnectionString").ConnectionString)
Dim cmd As New SqlCommand("select * from usertbl where userid=@userid", con)
cmd.Parameters.AddWithValue("@userid", TextBox1.Text)
con.Open()
Dim adapter As New SqlDataAdapter(cmd)
Dim ds As New DataSet()

adapter.Fill(ds, "usertbl")

GridView1.DataSource = ds
GridView1.DataBind()
End Sub

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim con As New SqlConnection(WebConfigurationManager.ConnectionSt rings("ConnectionString").ConnectionString)
Dim cmd As New SqlCommand("select * from usertbl", con)
con.Open()
Dim adapter As New SqlDataAdapter(cmd)
Dim ds As New DataSet()

adapter.Fill(ds, "usertbl")

GridView1.DataSource = ds
GridView1.DataBind()

con.Close()
End Sub

Protected Sub GridView1_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles GridView1.PageIndexChanging
GridView1.PageIndex = e.NewPageIndex
GridView1.DataBind()
End Sub

مشکلم وقتی که در بین صفحات گریدویو حرکت کنم.در حالتی که همه اطلاعات رو با لود صفحه نمایش بده پیجینگ درست کار می کنه ولی وقتی با سرچ یکسری اطلاعات رو نشون میده با رفتن به صفحه دوم گریدویو همه اطلاعات رو می خونه(چون صفحه لود میشه). چه تغییری باید بدم؟

dontspeak
پنج شنبه 29 اردیبهشت 1390, 16:03 عصر
با رفتن به صفحه دوم گریدویو همه اطلاعات رو می خونه(چون صفحه لود میشه). چه تغییری باید بدم؟ چرا از session استفاده نمی کنی؟ خوب برای گرید، اطلاعاتی که از دیتابیس خوندی و توی گریدت قرار میگیره یه session درست کن. اون session رو توی صفحه بعد بکار ببر اینجوری کل مشکلاتت حل میشه.

pedram_ns
پنج شنبه 29 اردیبهشت 1390, 16:27 عصر
من که نگرفتم ممکنه روی کدهای خودم کار کنید.مشکل اینه که همه این موارد در یک صفحه است.چطور وقت تغییر صفحه گریدویو، گریدویو می تونه بفهمه که اطلاعات کلی رو داره صفحه بندی می کنه یا اطلاعات سرچ شده رو؟

karim orooji
پنج شنبه 29 اردیبهشت 1390, 17:07 عصر
http://barnamenevis.org/showthread.php?253727-نمایش-نتایج-جستجو-در-GridView

dontspeak
پنج شنبه 29 اردیبهشت 1390, 18:49 عصر
خوب اگه منظورت اینه که می خوای توی یک صفحه دیگه گرید ویو رو با سرچی که تو تکس باکس داشتی پایه ریزی کنی؟ خوب وقتی می خوای از یه صفحه به صفحه دیگه بری باید یه sission تعریف کنی و اگه با session کار نکردی یه ندایی بده تا توضیح بدم. اما اگه مشکلت اینه که می خوای توی همون صفحه ای که هستی وقتی دکمه سرچو زدی اطلاعات سرچت بیاد تو گرید ویو و مشکلت اینجا میشه که چون صفحه دوباره لود میشه میره سراغ سرچ توی لود(نه سرچ توی تکس باکس) خوب برای این مشکلم باید توی لود صفحه ات بنویسی
if ispostback then
این کد میگه اگه صفحه ات پست بک شده فلان کارو بکن. مثلا سرچ توی تکس باکسو انجام بده و یه else میزاری که یعنی در غیر اینصورت همون سرچ تو لودی که میخوای رو انجام بده.
اگه مشکلت یکی از این دوتاست و بازم نتونستم منظورو بیان کنم بازم یه ندایی بده

mehdima
جمعه 30 اردیبهشت 1390, 23:13 عصر
من که نگرفتم ممکنه روی کدهای خودم کار کنید.مشکل اینه که همه این موارد در یک صفحه است.چطور وقت تغییر صفحه گریدویو، گریدویو می تونه بفهمه که اطلاعات کلی رو داره صفحه بندی می کنه یا اطلاعات سرچ شده رو؟


سلام دوست من

جواب DataView
سناریو :

در اولین ورود در رویداد لود صفحه اطلاعات از پایگاه داده دریافت در یک DataView ریخته و توسط گرید نمایش داده میشه سپس DataView در Session ذخیره میشه.
حالا برای سرچ کافیه DataView رو از Session بازیابی کنید و اونرو بر اساس سرچتون فیلتر کنید.

اینجاست که گرید حالیش میشه که باید چه اطلاعاتی رو صفحه بندی کنه.اطلاعات DataView رو.
نمونه




DataView dview1;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
SqlConnection cn = new SqlConnection("server=(local);database=healthdb;user id=sa;password=123");
SqlDataAdapter dp = new SqlDataAdapter("Select * from FormsEquipment", cn);
DataSet ds = new DataSet();
dp.Fill(ds);
dview1 = new DataView(ds.Tables[0]);
Session["data"] = dview1;
GridView1.DataSource = dview1;
GridView1.DataBind();
}
else
{
GridView1.DataSource = (DataView)Session["data"];
GridView1.DataBind();
}


}
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
GridView1.PageIndex=e.NewPageIndex;
GridView1.DataBind();
}
protected void btnsearch_Click(object sender, EventArgs e)
{
dview1 = (DataView)Session["data"];
dview1.RowFilter = "EquipmentCode >=" + Int32.Parse(txtsearch.Text);
GridView1.DataSource = dview1;
GridView1.DataBind();
}



شرمنده از اینکه کدها با C# هست.لطفا به این سایت مراجعه و به VB.NET تبدیل بفرمائید.
http://www.developerfusion.com/tools/convert/csharp-to-vb/
موفق باشید.

pedram_ns
شنبه 31 اردیبهشت 1390, 14:14 عصر
ممنون از همه.
مشکلم رو به این صورت حل کردم که در رویداد لود صفحه یک شرط گذاشتم که اگر مقدار تکس باکس خالی بود کل اطلاعات رو نشون بده و اگر خالی نبود مقدار اون رو بگیره و بر اساس اون اطلاعات رو نشون بده به این صورت پیجینگ گریدویو هم درست کار می کنه.