PDA

View Full Version : پرش به یک رکورد جلوی یا عقبی در جدول



sg.programmer
پنج شنبه 15 دی 1390, 16:15 عصر
next , back -با چه دستوری میتونم با داشتن یک فیلد کلید در جدول یک خونه جلو یا عقب رفت
یا با چه دستوری میتونم رکورد ها را پیمایش کرد (جلو و عقب)
مثلا در حال نمایش محصولی هستم - می خوام با زدن دکمه ای محصول بعدی را نمایش بدم

fakhravari
پنج شنبه 15 دی 1390, 16:52 عصر
همه موارد Paging دارند

sg.programmer
پنج شنبه 15 دی 1390, 16:59 عصر
سلام
در این فرم از دیتا لیست یا گرید یا هیچ کنترل دیگه ای استفاده نمی کنم -
من از vs2008 استفاده میکنم
آبا Paging = همون Pager مربوط به Grid یا Datalist و... هست؟ اگه خیر آیا Paging تمپلیتی برای نمایش فقط یک محصول را دارد؟ چطور؟




private void Show_Product()
{
try
{
//Session["_Login"] = "False".ToString();
int PID = 0;
try
{

PID = int.Parse(Session["ProductsID"].ToString());
//command inja gharar girad if sessinn==null
}
catch(Exception)
{
}

con.Open();
cmd.Connection = con;

cmd.CommandText = "SELECT TOP 1 Pro_ID, Grp_ID, Pro_Title, Pro_Subject, Pro_Description FROM tbl_Product where Pro_ID=" + PID;
dr = cmd.ExecuteReader();
while (dr.Read())
{
prodescription.InnerHtml = dr[3].ToString();
}
}
catch (Exception ex)
{
//redirect 404.asp
//throw new Exception(ex.ToString(), ex);
Response.Redirect("404.aspx");
}
finally
{
dr.Close();
cmd.Dispose();
con.Close();
// Bind();
}
}

fakhravari
پنج شنبه 15 دی 1390, 19:16 عصر
با سلام
باید خود شما بسازید اگر نمیخواهید از قسمت data استفاده نکنید.
فکر کنم خود پیج یه خاصیت دیتاسورس داره که داده ها را بشه بدون استفاده از این تپ data استفاده کرد
شما در مثال بالا فقط 1 رکورد خارج میشود.
که با prodescription.InnerHtml = dr[3].ToString(); نمایش می دهید
شما می خواهید از چه کنترلی استفاده کنید

sg.programmer
پنج شنبه 15 دی 1390, 22:29 عصر
با سلام

شما در مثال بالا فقط 1 رکورد خارج میشود.
که با prodescription.InnerHtml = dr[3].ToString(); نمایش می دهید
شما می خواهید از چه کنترلی استفاده کنید

از هیچ کنترلی استفاده نکردم - ما بین تگ ها html نمایش می دم
میخوام یک دکمه باشه که یکی یکی رکورد هامو بازیابی کنم و با هر کلیک بین تگ ها نمایش داده بشه

فعلا یک رکورد هست

A.S.Roma
پنج شنبه 15 دی 1390, 23:38 عصر
از هیچ کنترلی استفاده نکردم - ما بین تگ ها html نمایش می دم
میخوام یک دکمه باشه که یکی یکی رکورد هامو بازیابی کنم و با هر کلیک بین تگ ها نمایش داده بشه

فعلا یک رکورد هست

دستور SQL ت رو به این شکل بنویس :

WITH temp as
(
SELECT Pro_ID, Grp_ID, Pro_Title, Pro_Subject, Pro_Description , ROW_NUMBER() OVER (ORDER BY Pro_ID) RowNum
FROM tbl_Product WHERE Pro_ID=something
)
SELECT * FROM temp WHERE RowNum = 1


یک Counter تو پیجتون نیاز دازید که به موقع با دکمه ها کم و زیاد بشه و جای "1" در دستور بالا قرار بگیره. ( می تونید از HiddenField یا ViewState استفاده کنید. )

sg.programmer
جمعه 16 دی 1390, 08:54 صبح
اس کیو ال من 2000 هست و این تابع قابل اجرا نیست ROW_NUMBER()
--------------------------------
من میخوام از روش زیر استفاده کنم آیا درسته
1-میخوام در یک تابع کل PID را بخونم و در یک آرایه قرار بدم
2-با هر بار زدن دکمه این آرایه پیمایش بشه و رکورد بعدی و قبلی بدست بیاد
3-در تابع بعد با یک دستور select مقادیر اون رکورد را بازیابی کنم

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


protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ReadAllRecorandWriteTOArray();
}
}

از یک آرایه که متغییر عمومی باشه و یک متغیر دیگه برای نگه داشتن ایندکس آرایه برای پیمایش آن
* آیا با هر بار کلیک شدن دکمه مقدار داخل این متقیرها حذف که نخواهد شد درسته؟

sg.programmer
شنبه 17 دی 1390, 12:02 عصر
کد های Back , Next را کامل کردم قرار میدم تا اگه کسی خواست بتونه استفاده کنه

این تکه کد دوتا دکمه داره که در محصولات را در بین گروه خودش پیمایش میکنه
که از یک فرم دیگه که با کلیک کردن برروی محصولی بوسیله sESSION به این فرم وارد وتشخیص محصول - گروه و از نقطه دلخواه شروع به پیمایش میکنه
اگر SESSION=NULL بود یعنی مستقیم وارد این صفحه چزییات شد از اولین گروه - محصول شروع به پیمایش میکنه



public partial class portfolio_single : System.Web.UI.Page
{
SqlConnection con = new SqlConnection(System.Configuration.ConfigurationMa nager.ConnectionStrings["DBConnectionString"].ConnectionString);
SqlCommand cmd = new SqlCommand();
SqlDataReader dr;

public static ArrayList _Products = new ArrayList();

public static int _Index = 0;
public static int _Count = 0;

public static int _GrpID = 0;
public static int _ProID = 0;

protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
_FindGroupProduct();
_FillAllRecord();
Show_Product();
_CheckFirstOREnd();
}
}

private void _FindGroupProduct()
{
try
{
int PID = 0;
string _query = null;
try
{
PID = int.Parse(Session["ProductsID"].ToString());
_query = Convert.ToString("SELECT Grp_ID FROM tbl_Product where Pro_ID=" + PID);
}
catch (Exception)
{
// when occure session==null //\\ if direct login to this form
_query = Convert.ToString("SELECT TOP 1 Grp_ID ,Pro_ID FROM tbl_Product");
PID = -1;
}

int temp;
con.Open();
cmd.Connection = con;

cmd.CommandText = _query;
if (PID == -1)
{
dr = cmd.ExecuteReader();
while (dr.Read())
{
_GrpID = Convert.ToInt32(dr[0].ToString());
_ProID = Convert.ToInt32(dr[1].ToString());
}
}
else
{
temp = Convert.ToInt32(cmd.ExecuteScalar());
_GrpID = temp;
_ProID = PID;
}
}
catch (Exception)
{
//redirect 404.asp
//throw new Exception(ex.ToString(), ex);
Response.Redirect("404.aspx");
}
finally
{
cmd.Dispose();
con.Close();
}
}

private void _FillAllRecord()
{
try
{
int i = 0;
con.Open();
cmd.Connection = con;

cmd.CommandText = "SELECT Pro_ID FROM tbl_Product where Grp_ID=" + _GrpID;
dr = cmd.ExecuteReader();
_Index = i;

while (dr.Read())
{
int Product = 0;
Product = int.Parse(dr[0].ToString());
if (Product == _ProID)
_Index = i;
_Products.Add(Product);

i++;
}

if (i != 0)
i--;

_Count = i;
Response.Write("[tedad=" + _Count.ToString() + "]");
}
catch (Exception ex)
{
//redirect 404.asp
//throw new Exception(ex.ToString(), ex);
Response.Redirect("404.aspx");
}
finally
{
dr.Close();
cmd.Dispose();
con.Close();
}
}

private void Show_Product()
{
try
{
con.Open();
cmd.Connection = con;

cmd.CommandText = "SELECT TOP 1 Pro_ID, Grp_ID, Pro_Title, Pro_Subject, Pro_Description FROM tbl_Product where Pro_ID=" + _Products[_Index];
dr = cmd.ExecuteReader();
while (dr.Read())
{
prodescription.InnerHtml = dr[3].ToString();
}
}
catch (Exception ex)
{
//redirect 404.asp
//throw new Exception(ex.ToString(), ex);
Response.Redirect("404.aspx");
}
finally
{
dr.Close();
cmd.Dispose();
con.Close();
// Bind();
}
}

protected void LinkButton1_Click(object sender, EventArgs e)
{
//Back
if (_Index > 0)
{
_Index--;
Show_Product();
_CheckFirstOREnd();
}
}

protected void LinkButton2_Click(object sender, EventArgs e)
{
//Next
if (_Index < _Count)
{
_Index++;
Show_Product();
_CheckFirstOREnd();
}
}

protected void _CheckFirstOREnd()
{
LinkButton1.Enabled = true;
LinkButton2.Enabled = true;

if (_Index == 0)
LinkButton1.Enabled = false;
if (_Index == _Count)
LinkButton2.Enabled = false;
}
}