بابت جستجو روشی که من پیاده کردم از keyDown استفاده کردم در کادر متن وققتی مقدار داد و اینتر زد اطلاعات بیاره از دیتابیس ولی در روش یک میلیون اطلاعات امدم اطلاعات گرفتم داخل دیتاتیبل و و بعد از اینکه داخل دیتاتیبل گرفتم از دیتاتیبل جستجو میکنم تازه باز جستجو به روش KeyDown قرار میدم که روش خیلی خوبی هستش و فشاری روی دیتابیس نیست.
به این روش اطلاعات میگیرم و داخل DataTable میریزم و جتستو و آخر سر خواست تعداد رکورد یا کلش خروجی اکسل میگیرم تو یک ثانیه
private DataTable paggedtable;
private DataTable dt33;
private DataTable dtExcel;
private BindingSource bs = new BindingSource();
private clsProgress progress = new clsProgress();
private sabt_Motovafy_Gabz_Pesh_And_Sanad_Gabr sabtMotovafy = new sabt_Motovafy_Gabz_Pesh_And_Sanad_Gabr();
public DataTable refDt()
{
DataTable dtCustomers;
string constr = @"Data Source=" + Properties.Settings.Default.IP + ";Initial Catalog='" +
Program.DbDatabase + "';User ID='" + Program.Username + "';Password='" + Program.Password +
"'";
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(ProcedureName))
{
cmd.Parameters.Add(new SqlParameter(at + StatementType,
P_Sabt_Motovafy_Gabz_Pesh_And_Sanad_Gabr.Select_In fo_Motvfa));
cmd.Parameters.Add(new SqlParameter(at + P_Sabt_Motovafy_Gabz_Pesh_And_Sanad_Gabr.SM_Mahlsa btEtelat,
Program.A_ID));
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = con;
cmd.CommandTimeout = 0;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
dtCustomers = new DataTable();
dtCustomers.Load(sdr);
//dtCustomers.Columns[0].ColumnName = "شماره_پرونده";
//dtCustomers.Columns[1].ColumnName = "کد_رایانه_ای";
//dtCustomers.Columns[2].ColumnName = "تاریخ_تنظیم_سند";
//dtCustomers.Columns[3].ColumnName = "ملیت";
//dtCustomers.Columns[4].ColumnName = "کد_ملی";
//dtCustomers.Columns[5].ColumnName = "وضعیت_قبر";
//dtCustomers.Columns[6].ColumnName = "شماره_شناسنامه";
//dtCustomers.Columns[7].ColumnName = "جنسیت";
//dtCustomers.Columns[8].ColumnName = "نام_و_نام_خانوادگی";
//dtCustomers.Columns[9].ColumnName = "نام_پدر";
//dtCustomers.Columns[10].ColumnName = "محل_صدور";
//dtCustomers.Columns[11].ColumnName = "تلفن";
//dtCustomers.Columns[12].ColumnName = "موبایل";
//dtCustomers.Columns[13].ColumnName = "نام_تحویل_گیرنده";
//dtCustomers.Columns[14].ColumnName = "نسبت_متوفی";
//dtCustomers.Columns[15].ColumnName = "مشخصات_پرداخت_کننده";
//dtCustomers.Columns[16].ColumnName = "شماره_پرداخت_کننده";
//dtCustomers.Columns[17].ColumnName = "تاریخ_تولد";
//dtCustomers.Columns[18].ColumnName = "تاریخ_وفات";
//dtCustomers.Columns[19].ColumnName = "سن";
//dtCustomers.Columns[20].ColumnName = "بلوغ";
//dtCustomers.Columns[21].ColumnName = "وضعیت_متوفی";
//dtCustomers.Columns[22].ColumnName = "از";
//dtCustomers.Columns[23].ColumnName = "محل دفن";
//dtCustomers.Columns[24].ColumnName = "فاز";
//dtCustomers.Columns[25].ColumnName = "نام_قطعه";
//dtCustomers.Columns[26].ColumnName = "قطعه";
//dtCustomers.Columns[27].ColumnName = "ردیف";
//dtCustomers.Columns[28].ColumnName = "شماره";
//dtCustomers.Columns[29].ColumnName = "طبقه";
//dtCustomers.Columns[30].ColumnName = "توضیح_یا_رزرو";
//dtCustomers.Columns[31].ColumnName = "شماره_گواهی_فوت";
//dtCustomers.Columns[32].ColumnName = "علت_فوت";
//dtCustomers.Columns[33].ColumnName = "استان_محل_زندگی";
//dtCustomers.Columns[34].ColumnName = "شهرستان_محل_زندگی";
//dtCustomers.Columns[35].ColumnName = "آدرس_محل_سکونت";
//dtCustomers.Columns[36].ColumnName = "بوی_یا_غیر_بومی";
//dtCustomers.Columns[37].ColumnName = "محل_وقوع_فوت";
//dtCustomers.Columns[38].ColumnName = "استان_محل_فوت";
//dtCustomers.Columns[39].ColumnName = "شهرستان_محل_فوت";
//dtCustomers.Columns[40].ColumnName = "وضعیت_سند";
//dtCustomers.Columns[41].ColumnName = "نحوه_پرداخت_پیش_فروش";
//dtCustomers.Columns[42].ColumnName = "توضیح";
//dtCustomers.Columns[43].ColumnName = "گواهی_متصدی";
//dtCustomers.Columns[44].ColumnName = "سنگ";
//dtCustomers.Columns[45].ColumnName = "گواهی_به_ادارات";
//dtCustomers.Columns[46].ColumnName = "سرد_خانه";
//dtCustomers.Columns[47].ColumnName = "نایلون";
//dtCustomers.Columns[48].ColumnName = "کاور";
//dtCustomers.Columns[49].ColumnName = "نماسازی";
//dtCustomers.Columns[50].ColumnName = "جمع_آوری_و_یا_زد_عفونی";
//dtCustomers.Columns[51].ColumnName = "تشکیل_پرونده";
//dtCustomers.Columns[52].ColumnName = "خدمات_باز_کردن_قبر_آماده" ;
//dtCustomers.Columns[53].ColumnName = "گواهی_ثبت_احوال";
//dtCustomers.Columns[54].ColumnName = "صدور_گواهی_دفن";
//dtCustomers.Columns[55].ColumnName = "صدور_سند_حق_انتقال_از_قبر ";
//dtCustomers.Columns[56].ColumnName = "عنوان_سایر_اول";
//dtCustomers.Columns[57].ColumnName = "مبلغ_سایر_اول";
//dtCustomers.Columns[58].ColumnName = "عنوان_سایر_دوم";
//dtCustomers.Columns[59].ColumnName = "مبلغ_سایر_دوم";
//dtCustomers.Columns[60].ColumnName = "بسته_فرهنگی";
//dtCustomers.Columns[61].ColumnName = "نام_مداح";
//dtCustomers.Columns[62].ColumnName = "هزینه_مداح";
//dtCustomers.Columns[63].ColumnName = "هزینه_کل";
//dtCustomers.Columns[64].ColumnName = "درصد_مالیات";
//dtCustomers.Columns[65].ColumnName = "مبلغ_مالیات";
//dtCustomers.Columns[66].ColumnName = "دفن";
//dtCustomers.Columns[67].ColumnName = "پیش_فروش";
//dtCustomers.Columns[68].ColumnName = "راننده_اول";
//dtCustomers.Columns[69].ColumnName = "راننده_دوم";
//dtCustomers.Columns[70].ColumnName = "انتقال";
//dtCustomers.Columns[71].ColumnName = "تشییع";
//dtCustomers.Columns[72].ColumnName = "توقف";
//dtCustomers.Columns[73].ColumnName = "جمع_کل";
//dtCustomers.Columns[74].ColumnName = "مبلغ_تخفیف";
//dtCustomers.Columns[75].ColumnName = "مبلغ_پرداختی";
//dtCustomers.Columns[76].ColumnName = "نحوه_پرداخت";
//dtCustomers.Columns[77].ColumnName = "مبلغ_پرداختی_نقد";
//dtCustomers.Columns[78].ColumnName = "مبلغ_پرداختی_کارت_خوان";
//dtCustomers.Columns[79].ColumnName = "مانده";
//dtCustomers.Columns[80].ColumnName = "وضعیت_حساب_کتاب";
//dtCustomers.Columns[81].ColumnName = "نام_کاربر_ثبت_کننده";
//dtCustomers.Columns[82].ColumnName = "تاریخ_ثبت";
//dtCustomers.Columns[83].ColumnName = "زمان_ثبت";
//dtCustomers.Columns[84].ColumnName = "تاریخ_ویرایش";
//dtCustomers.Columns[85].ColumnName = "زمان_ویرایش";
//dtCustomers.Columns[86].ColumnName = "تعداد_دفعات_ویرایش";
}
con.Close();
}
}
return dtCustomers;
}
private void FocuseMoveControl(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
try
{
string filter = string.Format(
"CONVERT(" + dgv1.Columns[0].DataPropertyName + ", System.String) like '%" +
Txt_GVD_Date_Sabt_Sanad.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[1].DataPropertyName + ", System.String) like '%" +
Txt_SM_NameAndLast.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[2].DataPropertyName + ", System.String) like '%" +
Txt_GVD_Shomare_Parvande.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[4].DataPropertyName + ", System.String) like '%" +
Txt_SM_SHS_ShomareSanad.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[7].DataPropertyName + ", System.String) like '%" +
Txt_SM_CM_Code_Mali.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[8].DataPropertyName + ", System.String) like '%" +
Txt_SM_Shomare_Shenasname.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[9].DataPropertyName + ", System.String) like '%" +
Txt_CTS_Sex.Text.Trim() + "%' AND " +
"CONVERT(" + dgv1.Columns[10].DataPropertyName + ", System.String) like '%" +
Txt_SM_Father.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[11].DataPropertyName + ", System.String) like '%" +
Txt_SM_Mahal_Sodor.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[18].DataPropertyName + ", System.String) like '%" +
Txt_SM_Born.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[19].DataPropertyName + ", System.String) like '%" +
Txt_SM_Death.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[21].DataPropertyName + ", System.String) like '%" +
Txt_B_Bolog.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[22].DataPropertyName + ", System.String) like '%" +
Txt_RT_Title.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[25].DataPropertyName + ", System.String) like '%" +
Txt_SM_Faz.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[26].DataPropertyName + ", System.String) like '%" +
Txt_NG_NameGete.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[27].DataPropertyName + ", System.String) like '%" +
Txt_SM_Gete.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[28].DataPropertyName + ", System.String) like '%" +
Txt_SM_Radif.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[29].DataPropertyName + ", System.String) like '%" +
Txt_SM_Shomare.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[30].DataPropertyName + ", System.String) like '%" +
Txt_SM_Tabage.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[33].DataPropertyName + ", System.String) like '%" +
Txt_EPH_EletePhoto.Text.Trim() + "%' and " +
"CONVERT(" + dgv1.Columns[37].DataPropertyName + ", System.String) like '%" +
Txt_SM_Bome_Ger_Bome.Text.Trim() + "%' "
);
bs.Filter = filter;
// bs.Filter = string.Format(dataGridView1.Columns[0].DataPropertyName + " like '%" + Txt_Shomare_Sanad.Text+ "%' and " + dataGridView1.Columns[8].DataPropertyName + " like '%" + Txt_Name_LastName.Text+ "%' and " + dataGridView1.Columns[11].DataPropertyName + " like '%" + Txt_From.Text+ "%'");
dgv1.DataSource = bs;
MessageBox.Show("تعداد رکورد های یافت شده " + Convert.ToDecimal(dgv1.Rows.Count).ToString("N0") +
" تا میباشد.");
SendKeys.Send("{TAB}");
e.Handled = true;
e.SuppressKeyPress = true;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
}
private void Frm_Full_Search_Gabz_Vosual_Load(object sender, EventArgs e)
{
//progress.startProgress();
dt33 = refDt();
bs.DataSource = dt33;
dgv1.DataSource = bs;
dgv1.AllowUserToOrderColumns = true;
SetDisplayOrder();
//progress.stopProgress();
MessageBox.Show(
"تعداد رکورد های یافت شده " + Convert.ToDecimal(dt33.Rows.Count).ToString("N0") + " میباشد.");
}
private void Exporta(DataTable dtexpo)
{
SaveFileDialog dialog = new SaveFileDialog
{
InitialDirectory = "c:/Documents",
Title = "Select Where To Save File",
Filter = "Excel Files (*.xls;*.xlsx)|*.xls;*.xlsx|All files (*.*)|*.*"
};
if (dialog.ShowDialog() == DialogResult.OK)
{
StreamWriter wr = new StreamWriter(dialog.FileName, false, Encoding.Unicode);
for (int i = 0; i < dtexpo.Columns.Count; i++)
{
wr.Write(dtexpo.Columns[i].ToString().ToUpper() + "\t");
}
wr.WriteLine();
for (int i = 0; i < (dtexpo.Rows.Count); i++)
{
for (int j = 0; j < dtexpo.Columns.Count; j++)
{
if (dtexpo.Rows[i][j] != null)
{
wr.Write(Convert.ToString(dtexpo.Rows[i][j]) + "\t");
}
else
{
wr.Write("\t");
}
}
wr.WriteLine();
}
wr.Close();
MessageBox.Show("خروجی اکسل با موفقعیت انجام شد. ");
}
}
private DataTable DGV2DT(DataGridView dgv)
{
DataTable dtgv = new DataTable();
foreach (DataGridViewColumn col in dgv.Columns)
{
dtgv.Columns.Add(col.Name);
}
foreach (DataGridViewRow row in dgv.Rows)
{
DataRow dRow = dtgv.NewRow();
foreach (DataGridViewCell cell in row.Cells)
{
dRow[cell.ColumnIndex] = cell.Value;
}
dtgv.Rows.Add(dRow);
}
return dtgv;
}
private void خروجیاکسلToolStripMenuItem_Click(object sender, EventArgs e)
{
DataTable BDT = DGV2DT(dgv1);
Exporta(BDT);
}
private void dgv1_DoubleClick(object sender, EventArgs e)
{
try
{
Frm_Gabz_Vosual_Daramad fm = new Frm_Gabz_Vosual_Daramad();
fm.TxtShomareSand.Text = dgv1.SelectedRows[0].Cells[4].Value.ToString();
fm.Txt_GVD_Shomare_Parvande.Text = dgv1.SelectedRows[0].Cells[2].Value.ToString();
fm.Txt_SM_CM_Code_Mali.Text = dgv1.SelectedRows[0].Cells[7].Value.ToString();
fm.Show();
}
catch
{
}
}
private void Frm_Full_Search_Gabz_Vosual_Resize(object sender, EventArgs e)
{
}
private void Frm_Full_Search_Gabz_Vosual_FormClosing(object sender, FormClosingEventArgs e)
{
CacheDisplayOrder();
GC.Collect();
}
private void CacheDisplayOrder()
{
IsolatedStorageFile isoFile =
IsolatedStorageFile.GetUserStoreForAssembly();
using (IsolatedStorageFileStream isoStream = new
IsolatedStorageFileStream("DisplayCache", FileMode.Create,
isoFile))
{
int[] displayIndices = new int[dgv1.ColumnCount];
for (int i = 0; i < dgv1.ColumnCount; i++)
{
displayIndices[i] = dgv1.Columns[i].DisplayIndex;
}
XmlSerializer ser = new XmlSerializer(typeof(int[]));
ser.Serialize(isoStream, displayIndices);
}
}
private void SetDisplayOrder()
{
IsolatedStorageFile isoFile =
IsolatedStorageFile.GetUserStoreForAssembly();
string[] fileNames = isoFile.GetFileNames("*");
bool found = false;
foreach (string fileName in fileNames)
{
if (fileName == "DisplayCache")
{
found = true;
}
}
if (!found)
{
return;
}
using (IsolatedStorageFileStream isoStream = new
IsolatedStorageFileStream("DisplayCache", FileMode.Open,
isoFile))
{
try
{
XmlSerializer ser = new XmlSerializer(typeof(int[]));
int[] displayIndicies =
(int[])ser.Deserialize(isoStream);
for (int i = 0; i < displayIndicies.Length; i++)
{
dgv1.Columns[i].DisplayIndex = displayIndicies[i];
}
}
catch
{
}
}
}