#c#
#c#
Вопрос:
Просто нужна небольшая помощь. Я хочу разделить / выделить определенное значение в соответствии с другими 4 заданными значениями в datagridview, но как мне это сделать?
Пример:
Допустим, у меня 3500
Тогда в представлении таблицы данных значения будут
| ----- | -------------- |
| 0 | |
| 3000 | |
| 1000 | |
| 1000 | |
Что я пытаюсь получить: если значение на другом равно 0, оно пропускает его или значение равно 0.
| ----- | -------------- |
| 0 | 0 |
| 3000 | 3000 |
| 1000 | 500 |
| 1000 | 0 |
Спасибо 🙂
Комментарии:
1. Вам нужен код SQL или C #?
2. В вашем сообщении выше, пожалуйста, укажите некоторые входные переменные и стиль кодирования, который вам требуется. Например,
int[] {0, 3000, 1000, 1000}
, иfor-loop
.3. Можно ли это сделать в любом порядке? т. Е. являются ли 3000/3000, 1000/500 и 1000/1000, 1000/1000, 3000/1500 приемлемыми решениями?
4. Кроме того, это для winforms datagridview? Или WPF?
5. Под «разделить» вы подразумеваете «вычесть»? Под «пропустить»
0
вы имеете в виду «вычесть0
«? Под неназванным столбцом значений вы подразумеваете «Начать со значенияN
, например3500
, и столбца значенийV
. Для каждой строки вV
: еслиV <= N
затем вычестьV
изN
и скопироватьV
в новый столбец, иначе поместитьN
(он же «остаток») в новый столбец и установитьN
равным нулю?
Ответ №1:
Учитывая
Что у нас есть модель, определенная как:
public class Model
{
public decimal Amount { get; set; }
public decimal Applied { get; set; }
public Model(decimal amount, decimal applied)
{
Amount = amount;
Applied = applied;
}
}
Которые мы привязываем к нашему DataGridView
через BindingList
, вы должны иметь возможность использовать следующее:
decimal total = 3500M;
foreach (Model model in models)
{
if (model.Amount < total)
{
model.Applied = model.Amount;
total -= model.Amount;
}
else
{
model.Applied = total;
total = 0;
}
}
Полный пример (используя WinForms, нечто подобное может быть достигнуто в WPF)
public class Model
{
public decimal Amount { get; set; }
public decimal Applied { get; set; }
public Model(decimal amount, decimal applied)
{
Amount = amount;
Applied = applied;
}
}
public partial class MainForm : Form
{
private readonly BindingList<Model> models = new BindingList<Model>();
public MainForm()
{
InitializeComponent();
models.Add(new Model(0, 0));
models.Add(new Model(3000, 0));
models.Add(new Model(1000, 0));
models.Add(new Model(1000, 0));
Calculate();
MyDataGridView.DataSource = models;
}
private void Calculate()
{
decimal total = 3500M;
foreach (Model model in models)
{
if (model.Amount < total)
{
model.Applied = model.Amount;
total -= model.Amount;
}
else
{
model.Applied = total;
total = 0;
}
}
}
}