من همه چی را درست کردم . ولی یه جا باز با مشکل برخوردم
توی گزارشات که میگیرم از ردیف های انتخاب شده
فقط اونایی که توی دیتا گرید ویو نمایش میده را می گیره
مثلا اول جستچو میکنم و محسن را تیک می زنم بعد میرم سرچ میزنم و علی را سرچ میزنم گزارش محسن را با اینکه تیک خورده ولی بهم نمیده(فقط در صورتی میده که اون اسم توی دیتا گرید ویو قابل رویت باشه)
try
{
DataTable dt = new DataTable();
dt.Columns.Add(new DataColumn("ID", typeof(string)));
dt.Columns.Add(new DataColumn("kodM", typeof(string)));
dt.Columns.Add(new DataColumn("s1", typeof(string)));
int dtRow = 0;
for (int row = 0; row < radGridView1.Rows.Count; row++)
{
if ((bool)radGridView1.Rows[row].Cells[0].Value == true)
{
dt.Rows.Add();
dt.Rows[dtRow][0] = radGridView1.Rows[row].Cells[1].Value.ToString();
dt.Rows[dtRow][1] = radGridView1.Rows[row].Cells[2].Value.ToString();
dt.Rows[dtRow][2] = radGridView1.Rows[row].Cells[3].Value.ToString();
dtRow += 1;
}
}
if (dt.Rows.Count > 0)
{
StiReport report = new StiReport();
if (radioButton1.Checked)
report.Load(Application.StartupPath + "\\Report.mrt");
else
report.Load(Application.StartupPath + "\\Report2.mrt");
report.RegBusinessObject("tip", dt);
report.Show();
}
}
catch (Exception)
{
MessageBox.Show("????? ??? ???? ???");
}
_myList.Clear();
}
البته این قطعه کد را توی سرچ زدم
//ایجاد یک لیست برای ذخیره
foreach (DataGridViewRow row in radGridView1.Rows)
{
if (Convert.ToBoolean(row.Cells["Column1"].Value))
{
_myList.Add(row.Cells["Column2"].Value.ToString());
}
}
DataSet ds = new DataSet();
SqlDataAdapter adp = new SqlDataAdapter();
adp.SelectCommand = new SqlCommand();
adp.SelectCommand.Connection = con;
adp.SelectCommand.CommandText = "Select *from tip where name like '%' + @S + '%'";
adp.SelectCommand.Parameters.AddWithValue("@S", name.Text + "%");
adp.Fill(ds, "tip");
radGridView1.DataSource = ds;
radGridView1.DataMember = "tip";
for (int row = 0; row < radGridView1.Rows.Count; row++)
radGridView1.Rows[row].Cells[0].Value = false;
//حالا بعد از لود مجدد اطلاعات:
foreach (string str in _myList)
{
foreach (DataGridViewRow row in radGridView1.Rows)
{
if (str == row.Cells["Column2"].Value.ToString())
{
//تیک زدن مجدد ردیفها
row.Cells["Column1"].Value = true;
}
}