У меня есть страница, которая хранит пары значений ключей и позволяет добавлять новые пары значений ключей в существующий список. Вы не можете удалить или изменить существующие пары, но вы можете обновить значения. Чтобы сделать это визуально очевидным, отключенные входные коробки показывают в более темном оттенке серого до редактируемых коробок.
Это мой текущий код, он проверяет, если это то, что это за это /> `@foreach (var inment in editableprompts)
{
var isnew = string.isnullorwhitespace (reffice.key) || Quick.key.StartSwith ("new __");
var isdisabled =! isnew;
var bgcolor = isdisabled? AdminPortalColors.gray: AdminPortalColors.lightgray; < /p>
@if (isNew)
{
Save
< /code>
Это затем обновляется с помощью логики, стоящей за onclick для сохранения: < /p>
private void SaveNewPrompt()
{
if (editablePrompts == null) return;
var latestSet = promptSets
.Where(p => p.InstanceId.Equals(promptId, StringComparison.OrdinalIgnoreCase))
.OrderByDescending(p => p.Version)
.FirstOrDefault();
if (latestSet == null)
{
latestSet = new PromptSet
{
InstanceId = promptId ?? "unknown",
Version = 1,
DateCreated = DateTime.UtcNow,
Prompts = new Dictionary()
};
promptSets.Add(latestSet);
}
latestSet.Prompts.Clear();
var keys = new HashSet(StringComparer.OrdinalIgnoreCase);
foreach (var prompt in editablePrompts)
{
var key = prompt.Key?.Trim();
var value = prompt.Value;
if (string.IsNullOrWhiteSpace(key))
{
// Skip empty keys
continue;
}
if (!keys.Add(key))
{
// Skip duplicates
continue;
}
latestSet.Prompts[key] = value;
}
promptsDict = new Dictionary(latestSet.Prompts);
editablePrompts = promptsDict
.Select(kvp => new EditablePrompt { Key = kvp.Key, Value = kvp.Value })
.ToList();
StateHasChanged();
}
< /code>
Мое ожидание состояло в том, что по вызову состояния изменилось, оно позвонит для негоинициализированного метода моего текстового компонента, стоящего за ним? Однако кажется, что он накапливается прямо в Onchange, что означает, что цвет не обновляется. < /P>
@using System.ComponentModel.DataAnnotations
@inject IJSRuntime JsRuntime
@Label
@code {
[Parameter]
public Func OnChangeTextAsync { get; set; } = null;
[Parameter]
public Action OnChangeText { get; set; } = null;
[Parameter]
public bool SizeSmall { get; set; } = false;
[Parameter]
[Required]
public string Label { get; set; } = string.Empty;
[Parameter]
public string PlaceHolder { get; set; }
[Parameter]
public string Value { get; set; }
[Parameter]
public string HtmlId { get; set; }
[Parameter]
public LabelColor { get; set; }= LightGray;
[Parameter]
public BackgroundColor { get; set; }= LightGray;
[Parameter] public bool MaintainValue { get; set; } = false;
///
/// If true the input will be disabled
///
[Parameter] public bool Disabled { get; set; } = false;
private string _inputClass = string.Empty;
private string _containerClass = string.Empty;
protected override void OnInitialized()
{
HtmlId = string.IsNullOrEmpty(HtmlId) ? Label.Replace(" ", "-") + "-input": HtmlId;
if (string.IsNullOrEmpty(PlaceHolder))
{
PlaceHolder = $"Introduce {Label}";
}
if (string.IsNullOrWhiteSpace(Value))
{
Value = string.Empty;
}
if (!Disabled && !MaintainValue && string.IsNullOrWhiteSpace(Value))
{
Value = string.Empty;
}
_containerClass += $"box flex align-left {GetBackgroundClass(BackgroundColor)}";
_inputClass += $"{GetBackgroundClass(BackgroundColor)}";
if (SizeSmall)
{
_inputClass += " small-select-input margin-tb-stage";
}
}
private async Task OnChange(string value)
{
Value = value;
if (OnChangeTextAsync is not null)
{
await OnChangeTextAsync(value);
}
else if (OnChangeText is not null)
{
OnChangeText(value);
}
}
}
< /code>
Как это исправить? Является ли единственный ответ на обновление OnChange, который также принимает значение цвета фона? Или есть лучший способ, которым я не осознаю?
Подробнее здесь: https://stackoverflow.com/questions/797 ... haschanged
Почему мой код не освежает должным образом при вызове StateHaschange? ⇐ C#
Место общения программистов C#
1754918495
Anonymous
У меня есть страница, которая хранит пары значений ключей и позволяет добавлять новые пары значений ключей в существующий список. Вы не можете удалить или изменить существующие пары, но вы можете обновить значения. Чтобы сделать это визуально очевидным, отключенные входные коробки показывают в более темном оттенке серого до редактируемых коробок. [i]
Это мой текущий код, он проверяет, если это то, что это за это /> `@foreach (var inment in editableprompts)
{
var isnew = string.isnullorwhitespace (reffice.key) || Quick.key.StartSwith ("new __");
var isdisabled =! isnew;
var bgcolor = isdisabled? AdminPortalColors.gray: AdminPortalColors.lightgray; < /p>
@if (isNew)
{
[/i]
[i][/i]Save
< /code>
Это затем обновляется с помощью логики, стоящей за onclick для сохранения: < /p>
private void SaveNewPrompt()
{
if (editablePrompts == null) return;
var latestSet = promptSets
.Where(p => p.InstanceId.Equals(promptId, StringComparison.OrdinalIgnoreCase))
.OrderByDescending(p => p.Version)
.FirstOrDefault();
if (latestSet == null)
{
latestSet = new PromptSet
{
InstanceId = promptId ?? "unknown",
Version = 1,
DateCreated = DateTime.UtcNow,
Prompts = new Dictionary()
};
promptSets.Add(latestSet);
}
latestSet.Prompts.Clear();
var keys = new HashSet(StringComparer.OrdinalIgnoreCase);
foreach (var prompt in editablePrompts)
{
var key = prompt.Key?.Trim();
var value = prompt.Value;
if (string.IsNullOrWhiteSpace(key))
{
// Skip empty keys
continue;
}
if (!keys.Add(key))
{
// Skip duplicates
continue;
}
latestSet.Prompts[key] = value;
}
promptsDict = new Dictionary(latestSet.Prompts);
editablePrompts = promptsDict
.Select(kvp => new EditablePrompt { Key = kvp.Key, Value = kvp.Value })
.ToList();
StateHasChanged();
}
< /code>
Мое ожидание состояло в том, что по вызову состояния изменилось, оно позвонит для негоинициализированного метода моего текстового компонента, стоящего за ним? Однако кажется, что он накапливается прямо в Onchange, что означает, что цвет не обновляется. < /P>
@using System.ComponentModel.DataAnnotations
@inject IJSRuntime JsRuntime
@Label
@code {
[Parameter]
public Func OnChangeTextAsync { get; set; } = null;
[Parameter]
public Action OnChangeText { get; set; } = null;
[Parameter]
public bool SizeSmall { get; set; } = false;
[Parameter]
[Required]
public string Label { get; set; } = string.Empty;
[Parameter]
public string PlaceHolder { get; set; }
[Parameter]
public string Value { get; set; }
[Parameter]
public string HtmlId { get; set; }
[Parameter]
public LabelColor { get; set; }= LightGray;
[Parameter]
public BackgroundColor { get; set; }= LightGray;
[Parameter] public bool MaintainValue { get; set; } = false;
///
/// If true the input will be disabled
///
[Parameter] public bool Disabled { get; set; } = false;
private string _inputClass = string.Empty;
private string _containerClass = string.Empty;
protected override void OnInitialized()
{
HtmlId = string.IsNullOrEmpty(HtmlId) ? Label.Replace(" ", "-") + "-input": HtmlId;
if (string.IsNullOrEmpty(PlaceHolder))
{
PlaceHolder = $"Introduce {Label}";
}
if (string.IsNullOrWhiteSpace(Value))
{
Value = string.Empty;
}
if (!Disabled && !MaintainValue && string.IsNullOrWhiteSpace(Value))
{
Value = string.Empty;
}
_containerClass += $"box flex align-left {GetBackgroundClass(BackgroundColor)}";
_inputClass += $"{GetBackgroundClass(BackgroundColor)}";
if (SizeSmall)
{
_inputClass += " small-select-input margin-tb-stage";
}
}
private async Task OnChange(string value)
{
Value = value;
if (OnChangeTextAsync is not null)
{
await OnChangeTextAsync(value);
}
else if (OnChangeText is not null)
{
OnChangeText(value);
}
}
}
< /code>
Как это исправить? Является ли единственный ответ на обновление OnChange, который также принимает значение цвета фона? Или есть лучший способ, которым я не осознаю?
Подробнее здесь: [url]https://stackoverflow.com/questions/79732093/why-is-my-code-not-refreshing-properly-when-calling-statehaschanged[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия