من همه چی را درست کردم . ولی یه جا باز با مشکل برخوردم![خیلی عصبانی](images/smilies/yahoo/102.gif)
توی گزارشات که میگیرم از ردیف های انتخاب شده
فقط اونایی که توی دیتا گرید ویو نمایش میده را می گیره
مثلا اول جستچو میکنم و محسن را تیک می زنم بعد میرم سرچ میزنم و علی را سرچ میزنم گزارش محسن را با اینکه تیک خورده ولی بهم نمیده(فقط در صورتی میده که اون اسم توی دیتا گرید ویو قابل رویت باشه)
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;
}
}