PDA

View Full Version : پایش در سطرهای دیتاگرید



شهابسلطانی
چهارشنبه 23 تیر 1400, 18:24 عصر
سلام
یه دیتاگرید دارم که از اطلاعات پر شده
حالا میخوام یه باتن بذارم وقتی روی اون کلیک کردم
بر روی سطر مشخص(CurrentRow) یکسری عملیات انجام بشه
محاسبات که تموم شد
سطر دوم مورد بررسی و انجام محاسبات قرار بگیره
و همینطور به تعداد سطرهای دیتا گرید این اتفاق بیفته

نکته: کدش رو نوشتم درست هم کار میکنه فقط یک مشکلی که داره اینه که فقط بعد از (CurrentRow) یک سطر بیشتر نمیره

کدش رو میذارم(یکم پیچیدگی داره) ولی ممکنه کمک کنه
ممنون


for (int i = 0; i < GrdCost.RowCount; i++)
{
GrdCost.Rows[GrdCost.CurrentRow.Index + 1].Selected = true;
codcost = Convert.ToInt64(GrdCost.Rows[GrdCost.CurrentRow.Index + 1].Cells[4].Value);
/////////
var cckey = GrdCost.Rows[GrdCost.CurrentRow.Index + 1].Cells[0].Value;
var query = _cn.Database.SqlQuery<C_mtscost>("select * from _mtscost where mtscost_cckey='" + cckey + "'");
var result = query.ToList();
if (result.Count > 0)
{
var ccmts = result[0].mtscost_mtkey;
var q = _cn.Database.SqlQuery<C_mts>("select * from _mts where mt_Key='" + ccmts + "'");
GrdMab.DataSource = q.ToList();
GrdMab.Columns[1].Visible = false;
GrdMab.Columns[2].Visible = false;
GrdMab.Columns[5].Visible = false;
GrdMab.Columns[6].Visible = false;
GrdMab.Columns[3].HeaderText = "کد مبانی";
GrdMab.Columns[4].HeaderText = "نام مبانی";
GrdMab.Columns[7].HeaderText = "واحد سنجش";
GrdMab.Columns[0].HeaderText = "شماره";
GrdMab.Columns[3].Width = 75;
GrdMab.Columns[7].Width = 95;
GrdMab.Columns[4].Width = 130;
GrdMab.Columns[0].Width = 50;
GrdMab.RowHeadersVisible = false;
GrdDataTashim.Columns.Clear();
mtkey = Convert.ToInt32(GrdMab.CurrentRow.Cells[0].Value);
var qr = _cn.Database.SqlQuery<C_mts>("select * from _mts where mt_Parent='" + mtkey + "'");
GrdDataTashim.DataSource = qr.ToList();
GrdDataTashim.Columns[0].Visible = false;
GrdDataTashim.Columns[1].Visible = false;
GrdDataTashim.Columns[2].Visible = false;
GrdDataTashim.Columns[5].Visible = false;
GrdDataTashim.Columns[7].Visible = false;
GrdDataTashim.Columns[3].HeaderText = "کد مبانی";
GrdDataTashim.Columns[4].HeaderText = "نام مبانی";
GrdDataTashim.Columns[6].HeaderText = "مقدار";
GrdDataTashim.Columns.Add("RialTas", "مبلغ تسهیم شده");
GrdDataTashim.Columns["RialTas"].Width = 115;
GrdDataTashim.Columns["RialTas"].DefaultCellStyle.Format = "N0";
GrdDataTashim.Columns[6].DefaultCellStyle.Format = "N0";
GrdDataTashim.Columns[3].Width = 75;
GrdDataTashim.Columns[6].Width = 95;
GrdDataTashim.Columns[4].Width = 150;
GrdDataTashim.RowHeadersVisible = false;
}
else { GrdMab.Columns.Clear(); }
if (GrdMab.RowCount > 0)
{
FillData();
CmbGroupMab.Enabled = true;
SumGrdTashim();
}
else
{
var mb = new MsgBoxForNullGrdMab();
mb.ShowDialog();
CmbGroupMab.Enabled = false;
GrdDataTashim.Columns.Clear();
LblSum.ResetText();
}
/////////
var indexforparent = CmbGroupMab.SelectedValue;
var qur = _cn.Database.SqlQuery<Vw_RelCostCenter>("select* from Vw_RelCostCenter where cc_CostRelationCod ='" + codcost + "' And cc_Parent ='" + indexforparent + "' ");
var re = qur.ToList();
for (int ii = 0; ii < re.Count; ii++)
{
SumValue += re[ii].cc_RialCostCenter;
}
SumMabna = SumValue;
SumValue = Convert.ToDouble(null);
SumGrdTashim();
/////////
double SumMab = Convert.ToDouble(LblSum.Text);
double Result = SumMabna / SumMab;
for (int j = 0; GrdDataTashim.RowCount > j; j++)
{
var valmab = Convert.ToDouble(GrdDataTashim.Rows[j].Cells[6].Value);
GrdDataTashim.Rows[j].Cells["RialTas"].Value = Result * valmab;
}
listBox1.Items.Add("محاسبات برای هزینه با کد :'" + codcost + "' انجام شد .");

}

Mahmoud.Afrad
شنبه 26 تیر 1400, 02:42 صبح
فقط میتونم بگم وای از این کدنویسی...
مشکل فقط استفاده اشتباه از currentrow نیست. خودتون به کدها نگاه کنید و از خودتون بپرسید چرا اینها باید درون حلقه باشند.
و البته مشکلات دیگر.


الان سوال اصلی اینه که دارید چه محاسباتی رو روی چه جداولی انجام میدید؟
از چه راه ارتباطی برای کار روی دیتابیس دارید استفاده میکنید؟