PDA

View Full Version : حداکثر رکورد ممکن در دیتاگریدویو



maikola
سه شنبه 27 تیر 1391, 08:08 صبح
با سلام خدمت همه دوستان
تو برنامم یه سری دیتا از پورت سریال میگیرم و به صورت رکورد به دیتاگریدویو اضافه می کنم ولی وقتی تعداد رکورد ها حدودا از 800 بالاتر میره سیستم کلا کند میشه تایمر ها هم کند میشن و برنامه با جون کندن کار میکنه
می خواستم ببینم از دوستان کسی با این تعداد رکورد با دیتاگریدویو کار کرده؟ یعنی مشکل از دیتا گرید هست؟

mehran788
سه شنبه 27 تیر 1391, 12:29 عصر
سلام.بانك اطلاعاتي كه استفاده مي كني چيه؟
چون من شنيدم كه بانك اطلاعاتي اكسس اين مشكل رو داره.اگه بانك اطلاعاتي شما اكسس هست بهتره از SQL استفاده كني.

maikola
سه شنبه 27 تیر 1391, 13:55 عصر
من از بانک اطلاعاتی استفاده نمی کنم مستقیما میریزم تو دیتاگرید و از همون دیتاگرید هم برای بقیه کارا استفاده میکنم

Arash_janusV3
سه شنبه 27 تیر 1391, 16:06 عصر
از حلقه برای ریختن اطلاعات در گرید استفاده می کنید ؟

tooraj_azizi_1035
سه شنبه 27 تیر 1391, 16:50 عصر
سلام

http://msdn.microsoft.com/en-us/library/cc221403%28v=vs.95%29.aspx
بارها گفته شده برای انجام کارهای زمان بر یا Long Running باید از کامپوننت BackgroundWorker استفاده کنید:

using System.ComponentModel;
using System.Windows;
using System.Windows.Controls;

namespace SL_BackgroundWorker_CS
{
public partial class Page : UserControl
{
private BackgroundWorker bw = new BackgroundWorker();

public Page()
{
InitializeComponent();

bw.WorkerReportsProgress = true;
bw.WorkerSupportsCancellation = true;
bw.DoWork += new DoWorkEventHandler(bw_DoWork);
bw.ProgressChanged += new ProgressChangedEventHandler(bw_ProgressChanged);
bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerComplet ed);
}
private void buttonStart_Click(object sender, RoutedEventArgs e)
{
if (bw.IsBusy != true)
{
bw.RunWorkerAsync();
}
}
private void buttonCancel_Click(object sender, RoutedEventArgs e)
{
if (bw.WorkerSupportsCancellation == true)
{
bw.CancelAsync();
}
}
private void bw_DoWork(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;

for (int i = 1; (i <= 10); i++)
{
if ((worker.CancellationPending == true))
{
e.Cancel = true;
break;
}
else
{
// Perform a time consuming operation and report progress.
System.Threading.Thread.Sleep(500);
worker.ReportProgress((i * 10));
}
}
}
private void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
if ((e.Cancelled == true))
{
this.tbProgress.Text = "Canceled!";
}

else if (!(e.Error == null))
{
this.tbProgress.Text = ("Error: " + e.Error.Message);
}

else
{
this.tbProgress.Text = "Done!";
}
}
private void bw_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
this.tbProgress.Text = (e.ProgressPercentage.ToString() + "%");
}
}
}

maikola
چهارشنبه 28 تیر 1391, 07:30 صبح
از حلقه برای ریختن اطلاعات در گرید استفاده می کنید ؟
ابتدا تمام اطلاعاتی که از طریق پورت سریال گرفتم رو دریک دیتاتیبل تقسیم بندی می کنم بعد datasorce مربوط به گرید رو برابر دیتاتیبل قرار میدم
هر سری اطلاعاتی که از پورت سریال دریافت می کنم یک رکورد دیتاگرید رو مسازه

SplitInputDate = InputDate.Split(',');
rowCounter++;
dt.Rows.Add(rowCounter, midstrtime, Convert.ToInt32(SplitInputDate[0]), Convert.ToInt32(SplitInputDate[1]), Convert.ToInt32(SplitInputDate[2]), Convert.ToInt32(SplitInputDate[3]), Convert.ToInt32(SplitInputDate[4]), Convert.ToInt32(SplitInputDate[5]), Convert.ToInt32(SplitInputDate[6]), Convert.ToInt32(SplitInputDate[7]), Convert.ToInt32(SplitInputDate[8]), Convert.ToInt32(SplitInputDate[9]), Convert.ToInt32(SplitInputDate[10]), Convert.ToInt32(SplitInputDate[11]), Convert.ToInt32(SplitInputDate[12]), Convert.ToInt32(SplitInputDate[13]), Convert.ToInt32(SplitInputDate[14]), Convert.ToInt32(SplitInputDate[15]));
this.dataGridView1.DataSource = dt;
dataGridView1.Refresh();
countererror = 0;