PDA

View Full Version : سوال: نشان دادن تعداد مشخصی رکورد در data grid view



ffoxfire
شنبه 25 آذر 1391, 21:30 عصر
سلام دوستان
من یه دیتا گرید ویو دارم که میخوام یه تعدادی مشخص از کل اطلاعاتم رو نمایش بدم
مثل همین صفحه تاپیک که وقتی میزنی صفحه بعد(دکمه -بعدی) مثلا 30تای بعدی را نمایش بده
منتظرم:متفکر:

مهدی هادیان2
یک شنبه 26 آذر 1391, 09:19 صبح
بسم الله الرحمن الرحیم
با سلام
کاری که میخواهید انجام دهید بسیار درست و به جاست و سرعت برنامه رو بالا میبره چون رکوردها رو تکه تکه از پایگاه داده واکشی میکنه و در پروژه های واقعی باید لحاظ شود.
این بحث مربوط به Pagin در پایگاه داده میشود؛ مثلا در هر بار فراخوانی 14 تا از رکوردهاتون رو نمایش بده.
نمونه کد در سایت هایی مثل code project وجود داره.
موفق باشید.

mousa1992
یک شنبه 26 آذر 1391, 09:31 صبح
سلام

در Query که برای بازگردانی اطلاعات مینویسی این عبارت رو باید اضافه کنی
بر اساس تعداد رکورد ها :

"select top 30 ..."

درصد:
"select top 20 percent..."

موفق باشید

ffoxfire
یک شنبه 26 آذر 1391, 16:37 عصر
میشه یه مقدار بیشتر توضیح بدی
یا حداقل آدرس دقیقتر بدی
یا اینکه اون خط از کد مورد نظر رو بنویسی؟؟

ffoxfire
دوشنبه 27 آذر 1391, 16:18 عصر
سلام
راهش و پیدا کردم
با استفاده از یه کامپوننت به نام DataGridViewPagingControl
خیلی راحته
البته کامپوننتهای بیشتری هم هست


public partial class Form1 : Form
{
SqlConnection scon = new SqlConnection(@"Data Source=ASUS-PC\SQLEXPRESS;Initial Catalog=t1;Integrated Security=True");
// OleDbConnection sCon = new OleDbConnection();
SqlCommand cmd = new SqlCommand();

// OleDbDataAdapter sComand = new OleDbDataAdapter();


private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e) { }

public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)
{
cmd.Connection=scon;
scon.Open();
DataSet ds = new DataSet();
SqlDataAdapter scomand;
scomand= new SqlDataAdapter("select * from t1",scon);
ds.Clear();
scomand.Fill(ds);
// sComand = new OleDbDataAdapter("SELECT * FROM t_Cur ORDER BY CUR_ID ASC", sCon);

//تا اینجا رو که باید می نوشتیم، سه خط بعدی برای کنترل صفحه بندی هست

//تعیین دیتاسورس
dataGridViewPagingControl1.dsSource = ds;
//شمارش تعداد کل رکوردها
dataGridViewPagingControl1.Records_Count = ds.Tables[0].Rows.Count;
//انجام محاسبات برای تخصیص رکوردهای هر صفحه که در دی ال ال انجام میشود
dataGridViewPagingControl1.build_result();

}

private void dataGridViewPagingControl1_Load(object sender, EventArgs e)
{

}
}

ffoxfire
دوشنبه 27 آذر 1391, 16:19 عصر
راستی اینو از جوابهای یکی از دوستان که برداشتم و یادم نیست که کجا بود
از اوشون هم متشکرم

مهدی هادیان2
دوشنبه 27 آذر 1391, 17:36 عصر
بسم الله الرحمن الرحیم
با سلام
با اینکه کدی که گذاشتید کارتون رو راه میاندازه ولی فکر نکنم کار درستی باشه چون دارید تمام رکوردها رو از بانک واکشی میکنید و تنها فرم نمایشتون تغییر کرده و چند تا چند تا نشون میدید.
یک تکه از کدی که در SP نوشتم براتون میگذارم؛ ولی به عقیده بنده خودتون از سایت هایی مثل CodeProject,... پیدا کنید تا مطابق با پیاده سازی خودتون کار کنید.
ALTER PROCEDURE [dbo].[SPViewFactors]

@FactorCode bigint=0,

@PageNumber bigint --Implicity Paging In DataBase
AS
BEGIN

--Count of Records In The Each Page In Paging.
DECLARE @PageSize smallint

SET @PageSize=14

SET NOCOUNT ON;

SELECT *
FROM (
--Implicity Paging
SELECT ROW_NUMBER() OVER (ORDER BY FactorCode)AS RowNum,
FactorCode, Date

FROM Factor


WHERE


/*@FactorCode is Optional Parameter*/
(@FactorCode =0 OR FactorCode=@FactorCode))Result

WHERE
--Implicity Paging
(RowNum>@PageSize *(@pageNumber - 1)AND RowNum <=(@PageSize * @pageNumber))


END
موفق باشید.