PDA

View Full Version : مشکل در مورد پیدا کردن رکورد ( search )



s_mostafa_h
شنبه 19 خرداد 1386, 16:59 عصر
با سلام
من از چند تا TextBox برای پر کردن رکورد ها استفاده کردم . با استفاده از دکمه های Next و ... کاربر به رکورد های بعدی می رود . همچنین برای جستجو هم از TextBox استفاده کردم . مشکل در پیدا کردن رکورد نیست بلکه اگر کاربر به رکورد خاصی با استفاده از جستجو دست یافت ، آن وقت دکمه های Next و Previous به درستی کار نمی کنند .


private void btnSearch_Click(object sender, EventArgs e)
{
if (txtSearch.Text == "")
{
MessageBox.Show("لطفا شماره قبض را تایپ نمایید", "توجه", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}
GoToSpecificRec();
txtSearch.Text = "";



private void GoToSpecificRec()
{

try
{
if (txtSearch.Text != "")
{
string Selectection = "Select * from PersonalTbl where QabzID='" + Convert.ToInt32(txtSearch.Text) + "'";
DataSet dsSearch = new DataSet();

SqlDataAdapter daSearch = new SqlDataAdapter(Selectection, strConnection);
daSearch.Fill(dsSearch, "PersonalTbl");
Display(dsSearch);
}
else
{
MessageBox.Show("لطفا شماره قبض را تایپ نمایید", "توجه", MessageBoxButtons.OK, MessageBoxIcon.Information);
return;
}

}
catch (SqlException excep)
{
MessageBox.Show(excep.ToString());
}
}




private void Display(DataSet ds)
{
try
{
DataTable dtSearch = new DataTable();
dtSearch = ds.Tables["PersonalTbl"];
if (dtSearch.Rows.Count != 0)
{
int RecNo = (int)dtSearch.Rows[0][0];
txtQabzNo.Text = RecNo.ToString();

txtPhoneModel.Text = (string)dtSearch.Rows[0][1];
txtSerialPhone.Text = (string)dtSearch.Rows[0][2];
txtBatterySerrial.Text = (string)dtSearch.Rows[0][3];
txtWarranty.Text = (string)dtSearch.Rows[0][4];

}
else
{
MessageBox.Show("رکوردی یافت نشد");
}
}
catch (SqlException ex)
{
MessageBox.Show(ex.ToString());
}
}

و برای دکمه Next برای حرکت به رکورد بعدی داریم :


if (this.bindingManager.Position < this.bindingManager.Count - 1)
{
this.bindingManager.Position += 1; //increment position by 1
}

برای سایر دکمه جهت بین رکورد ها مشابه مورد اخیر است

متشکرم

PC2st
شنبه 19 خرداد 1386, 17:48 عصر
کار نمیکنه چون برای دکمه Next، تکست باکسها را پر نمیکنید و فقط Position مربوط به bindingManager را به رکورد بعدی میبرید.

اگر میخواهید که با تغییر خاصیت Postition، تکست باکسها هم به رکورد بعدی یا قبلی تغییر پیدا کنند، باید تکست باکسها را به dataSet متصل (Bind) کنید و dataSet بهتر است بصورت یک فیلد خصوصی در فرم تعریف شود تا درصورت فشردن دکمه Next، به همان dataSet دسترسی داشته باشد.