نمایش نتایج 1 تا 9 از 9

نام تاپیک: بعد از Paging ديتاليست ، در صفحه بعدي اطلاعات صفحه قبل نمايش داده ميشه .

  1. #1
    کاربر دائمی آواتار merlin_vista
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    نصف جهان
    پست
    1,014

    Tick بعد از Paging ديتاليست ، در صفحه بعدي اطلاعات صفحه قبل نمايش داده ميشه .

    سلام دوستان خوبم :

    من براي صفحه بندي ديتاليست از يك SP استفاده ميكنم و لينك ها را ميسازم .

    كد SP :
    ALTER  PROCEDURE dbo.Dsl_paging
    (
    @startRowIndex int,
    @maximumRows int
    )
    AS

    --DECLARE @startRow int

    SET ROWCOUNT @startRowIndex

    SET ROWCOUNT @maximumRows

    SELECT * FROM Tbl_name

    ORDER BY id

    SET ROWCOUNT 0


    كد هاي C#‎ براي صفحه بندي :
    SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrin  gs[0].ConnectionString);
    protected void Page_Load(object sender, EventArgs e)
    {
    this.Literal1.Text = LinkPaging();
    if (!IsPostBack)
    {
    SelectAll();
    }
    }
    private DataTable Bind(int start,int max)
    {
    SqlDataAdapter dat_sel = new SqlDataAdapter("Dsl_paging", con);
    dat_sel.SelectCommand.CommandType = CommandType.StoredProcedure;
    dat_sel.SelectCommand.Parameters.AddWithValue("@st artRowIndex", start);
    dat_sel.SelectCommand.Parameters.AddWithValue("@ma ximumRows", max);
    DataTable dt = new DataTable();
    dat_sel.Fill(dt);
    return dt;

    }

    private int count()
    {
    SqlCommand cmd = new SqlCommand("all_count", con);
    cmd.CommandType = CommandType.StoredProcedure;
    con.Open();
    int c = (int)cmd.ExecuteScalar();
    con.Close();
    return c;
    }

    private string LinkPaging()
    {
    int cu = count();
    string link = "";
    if (cu > 0)
    {
    int pg = cu / 10;
    int i=1;
    if( cu % 10 != 0 )
    {
    pg+= 1;
    }
    while (i <= pg)
    {
    link += "<a href='paging.aspx?p=" + i.ToString() + "'>" + i.ToString() + "</a>|";
    i++;
    }
    }
    return link;
    }

    private void SelectAll()
    {
    try
    {
    int p =int.Parse(Request.QueryString["p"].ToString());
    int max = p * 10;
    int start = max - 10;
    this.DataList1.DataSource = Bind(start, max);
    this.DataList1.DataBind();
    }
    catch
    {
    this.DataList1.DataSource = Bind(1, 10);
    this.DataList1.DataBind();
    }
    }


    از دوستان كسي ميدونه كه مشكل از كجاست . من فكر ميكنم مشكل از SP باشه ولي نميدونم از كجاش هست . اگر كسي ميدونه بگويد ممنون ميشم .

  2. #2

    نقل قول: بعد از Paging ديتاليست ، در صفحه بعدي اطلاعات صفحه قبل نمايش داده ميشه .

    این فایلو دانلود کن و اونو اجرا کن،خیلی بهت کمک میکنه.البته اینو آقای راد به من معرفی کردن،جا داره از ایشون تشکر کنم.
    فایل های ضمیمه فایل های ضمیمه

  3. #3
    کاربر دائمی آواتار merlin_vista
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    نصف جهان
    پست
    1,014

    نقل قول: بعد از Paging ديتاليست ، در صفحه بعدي اطلاعات صفحه قبل نمايش داده ميشه .

    maryam_jamshid @ :
    ممنون دوست عزيز اين كامپونت به همراه آموزش و SP هاي اونا داشتم ولي نميخواهم از كامپونت استفاده كنم . اگه مشكل كد بالا را حل كنيد ممنون ميشم .

  4. #4

    نقل قول: بعد از Paging ديتاليست ، در صفحه بعدي اطلاعات صفحه قبل نمايش داده ميشه .

    ببین یه همچین مشکلی با صفحه بندی معمولا واسه وقتیه که بعد تعویض صفحه کنترلی که داده رو نشون میده دوباره بایند نشه اینجوری تغییر صفحه تو پست بک بعدی اتفاق میفته.شایدددد ازین باشه

  5. #5
    کاربر دائمی آواتار merlin_vista
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    نصف جهان
    پست
    1,014

    نقل قول: بعد از Paging ديتاليست ، در صفحه بعدي اطلاعات صفحه قبل نمايش داده ميشه .

    آقا مشكل من دقيقاً اين هست كه ، فرض كنيد در صفحه 1 ما 10 ركورد داريم كه نمايش ميدهد و صفحه بندي كاملاً انجام شده . ولي با رفتن به صفحه 2 10 ركورد جديد به همراه 10 ركورد قبلي نمايش داده ميشه . و اگر دوباره به صفحه 1 برگرديم 10 ركورد صفحه 1 نمايش داده ميشود و 10 ركورد صفحه 2 پنهان ميشود .

    مشكل من فقط همين هست كه با رفتن به صفحه جديد ركورد هاي صفحه قبلي هم نمايش پيدا ميكنه .

    از دوستان لطفاً كمك كنيد تا اين مشكل حل شود .

    به نظر خودم سر چشمه اين مشكل SP هست ، ولي نميدونم از چه جاي كوئري ميباشد .

  6. #6

    نقل قول: بعد از Paging ديتاليست ، در صفحه بعدي اطلاعات صفحه قبل نمايش داده ميشه .

    با سلام . راستش من با SP شما حال نکردم
    یکم اصولی نیست به نظرم

    اگه میتونید SP رو تغییر بدین و SQL2005 هم دارین . (سرور شما هم داره) بهتره از Row_Number استفاده کنید.
    توی همین سایت هم مطرح شده . توضیحاتی که قبلا در مورد این تکنیک داده شده :
    با استفاده از تابع ()Row_Number در SQL 2005 میتونید هنگام Select رکوردها رو سمت دیتابیس شماره گذاری کنید و بصورت صفحه صفحه رکوردها رو بخونید . مثلا صفحه اول رکورد 1 تا 10 . صفحه دوم 11 تا 20 و ...
    در SQL 2005 یک تابع به نام Row_Number() نیز وجود دارد که روی سطرها شماره گذاری می کند . در ضمن میتوانید Orderby نیز برای شماره گذاری در نظر بگیرید و سپس نتایج رو Select کنید .
    برای مثال بعد از شماره گذاری میتوانید به این صورت سلکت کنید .

    Select * From @MyT Where RowNum Between 1 and 10
    ROW_NUMBER (Transact-SQL)
    http://technet.microsoft.com/en-us/l.../ms186734.aspx

    موفق باشید . خدانگهدار

  7. #7
    کاربر دائمی آواتار merlin_vista
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    نصف جهان
    پست
    1,014

    نقل قول: بعد از Paging ديتاليست ، در صفحه بعدي اطلاعات صفحه قبل نمايش داده ميشه .

    ممنون دوست عزيز با RowNumber كه گفتيد نوشتم . فقط سوالي كه پيش اومده اينه كه آيا اين روش كه شما معرفي كرديد RowNumber بهتره . يا روشي كه من در پست اول گفتم .

  8. #8
    کاربر دائمی آواتار merlin_vista
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    نصف جهان
    پست
    1,014

    نقل قول: بعد از Paging ديتاليست ، در صفحه بعدي اطلاعات صفحه قبل نمايش داده ميشه .

    دوست عزيز من تو برنامه خودم ازش استفاده كردم :

    ALTER PROCEDURE sp_Site_Select_Post_Search
    (
    @q nvarchar(MAX),
    @in int,
    @to int
    )
    AS


    WITH tmp AS
    (

    SELECT tbl_Post.f_catId, tbl_Post.f_date, tbl_Post.f_title, tbl_Post.f_Body,tbl_Post.f_ExBody, tbl_Post.f_CountView,
    tbl_Admin.f_name + ' ' + tbl_Admin.f_famil AS Fullname, tbl_category.f_name AS CatName, tbl_category.f_Description, tbl_Post.f_id
    ,ROW_NUMBER() OVER (ORDER BY tbl_Post.f_id) AS 'RowN'
    FROM tbl_Post INNER JOIN
    tbl_Admin ON tbl_Post.f_userId = tbl_Admin.f_id INNER JOIN
    tbl_category ON tbl_Post.f_catId = tbl_category.f_id
    WHERE (tbl_Post.f_state = 'True') And

    (
    tbl_Post.f_title LIKE '%'+@q+'%' OR tbl_Post.f_Body LIKE '%'+@q+'%' OR tbl_Post.f_ExBody LIKE '%'+@q+'%'
    )

    ORDER BY tbl_Post.f_date DESC

    )

    SELECT *
    FROM tmp
    WHERE RowN BETWEEN @in AND @to
    ولي اين خطا را ميدهد (براي مشاهده تصوير بزرگ روي تصوير كليك كنيد )


    مشكل از ORDER BY tbl_Post.f_date DESC ، .وقتي برش ميدارم درست ميشه . ولي من ميخواهم كه باشه ..... مممنون از شما

  9. #9
    کاربر دائمی آواتار merlin_vista
    تاریخ عضویت
    مرداد 1386
    محل زندگی
    نصف جهان
    پست
    1,014

    نقل قول: بعد از Paging ديتاليست ، در صفحه بعدي اطلاعات صفحه قبل نمايش داده ميشه .

    ممنون دوستان عزيز : قسمت آخر را اين جوري نوشتم مشكل حل شد .
    SELECT * 
    FROM tmp
    WHERE RowN BETWEEN @in AND @to
    ORDER BY tmp.f_date DESC


    تشكر از همه دوستاني كه من را ياري كردند.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •