PDA

View Full Version : سوال: مشکل در لود مجدد اطلاعات



arefba
پنج شنبه 02 اردیبهشت 1389, 03:26 صبح
تا اونجا که من میدونم وقتی که یک دیتا گرید رو به بانکی متصل می کنیم هر چقدر اطلاعات رو فراخوانی کنیم باید یک دور اونا رو بنویسه
تو این نرم افزار اوپن سورس وقتی که چند بار پشت هم دکمه خواندن مسیج ها رو میزنی از بانک اطلاعاتی ( تو این نرم افزار گوشی کارش رو انجام میده ) داده ها رو لود می کنه و اگه دوباره اون رو بزنی برای چندمین بار لود می کنه و اطلاعاتی که قبلا لود شدن باقی می مونن
کسی راه حلی برای این موضوع نداره

Cursor.Current = Cursors.WaitCursor;
string storage = GetMessageStorage();

try
{
// Read all SMS messages from the storage

DecodedShortMessage[] messages = CommSetting.comm.ReadMessages(PhoneMessageStatus.A ll, storage);
foreach (DecodedShortMessage message in messages)
{
Output(string.Format("Message status = {0}, Location = {1}/{2}",
StatusToString(message.Status), message.Storage, message.Index));
ShowMessage(message.Data);
Output("");
}
Output(string.Format("{0,9} messages read.", messages.Length.ToString()));
Output("");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}

Cursor.Current = Cursors.Default;

mbsmbsmbs
پنج شنبه 02 اردیبهشت 1389, 09:56 صبح
میشه کد قسمت مربوط به گرید ویو و پیوندش به بانک رو بنویسی شاید dataset رو کلین نکردی

arefba
پنج شنبه 02 اردیبهشت 1389, 11:51 صبح
http://arefvasara.persiangig.com/other/183.rar
این کل پروژه هست

mbsmbsmbs
پنج شنبه 02 اردیبهشت 1389, 12:07 عصر
شما فقط باید قبل از هر خواندن datatable را پاک کنید dt.Clear();



privatevoid btnReadMessage_Click(object sender, EventArgs e)
{
//read
dt.Clear();
Cursor.Current = Cursors.WaitCursor;
string storage = GetMessageStorage();
try
{
// Read all SMS messages from the storage
DecodedShortMessage[] messages = CommSetting.comm.ReadMessages(PhoneMessageStatus.A ll, storage);
foreach (DecodedShortMessage message in messages)
{
Output(string.Format("Message status = {0}, Location = {1}/{2}",
StatusToString(message.Status), message.Storage, message.Index));
ShowMessage(message.Data);
Output("");
}
Output(string.Format("{0,9} messages read.", messages.Length.ToString()));
Output("");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Cursor.Current = Cursors.Default;

}

mbsmbsmbs
پنج شنبه 02 اردیبهشت 1389, 12:11 عصر
در ضمن این پروژه دارای یک مشکل دیگه هم هست که در نحوه مطلع شدن از رسیدن sms با استفاده از کامپوننت GsmComm بهش ان شاء الله می پردازند

arefba
پنج شنبه 02 اردیبهشت 1389, 12:41 عصر
نمیدونم چرا به ذهنم نیفتاد همش تو فکر پاک کردن دیتا گرید بودم ولی من باید از ریشه حذفش می کردم
منظورم از اندیس اینه که یه ستونی رو بندازه که به ستون ها شماره بده و بتونی از شماره هاش استفاده کنی
راستی چطور میشه اس ام اس ها رو بر اساس تاریخ مرتب کرد.

mbsmbsmbs
پنج شنبه 02 اردیبهشت 1389, 16:41 عصر
اگر منظورتون از اندیس همان اضافه کردن یک ستون به نام ردیف است :ابتدا در یک متغیر سراسری مثلا int se=1تعریف کرده و سپس

private void Send_Load(object sender, System.EventArgs e)
{
chkMultipleTimes.Checked = true;
//read
dt.Columns.Add("ردیف", typeof(string));
dt.Columns.Add("Sender", typeof(string));
dt.Columns.Add("Time", typeof(string));
dt.Columns.Add("Message", typeof(string));
}
و سپس

private void BindGrid(SmsPdu pdu)
{//read
DataRow dr = dt.NewRow();
SmsDeliverPdu data = (SmsDeliverPdu)pdu;
dr[0] = se;
se++;
dr[1] = data.OriginatingAddress.ToString();
dr[2] = data.SCTimestamp.ToString();
dr[3] = data.UserDataText;
dt.Rows.Add(dr);
dataGrid1.DataSource = dt;
}
و درنهایت همان جایی که قبلا گفتیم dt را کلین کن se را هم 1 کن