Применение выбора DataGridViewComboBoxCell сразу изменяется

Если вы уверены, что рабочий каталог не изменяется между временем создания шаблона и временем его чтения, то вам не нужно устанавливать какое-либо свойство перед инициализацией Velocity: [1110 ]

  • вам не нужен IncludeRelativePath, поскольку его цель - позволить #include () и #parse () находить шаблоны в том же каталоге, что и текущий шаблон. Это не относится к вашему случаю использования.
  • Вам не нужно устанавливать загрузчик ресурсов file, потому что он установлен по умолчанию.
  • вам определенно не нужно устанавливать класс загрузчика ресурсов classpath, потому что вы даже не используете его
  • вам не нужно устанавливать путь к загрузчику файловых ресурсов, потому что он по умолчанию к ".".

Я не знаю, почему ваш код работает локально, а не в производство. Возможно, рабочий каталог изменился. Возможно переменные templateName и fileName не согласованы. Возможно, шаблон запрашивается до того, как он будет написан. Есть ли серьезные различия между средами? Есть проблемы с безопасностью? Операционные системы одинаковы? Как отметил soorapadman, это может быть проблема с чувствительностью к регистру между Linux и Windows.

Следующий код должен работать везде:

VelocityEngine velocityEngine = new VelocityEngine();
velocityEngine.init();
PrintWriter out = new PrintWriter("test.vm");
out.println("hello");
out.close();
Template template = velocityEngine.getTemplate("test.vm");
6
задан jumpinjackie 11 April 2009 в 18:29
поделиться

2 ответа

Если вы обрабатываете событие EditingControlShowing в DataGridView, вы можете прикрепить обработчик события к лежащее в основе ComboBox событие SelectedIndexChanged (или SelectedValueChanged или любое другое событие ComboBox). Он будет срабатывать немедленно при изменении значения ComboBox, и вы можете делать с новым значением все, что захотите.

Пример кода для этого приведен в документации MSDN для DataGridViewComboBoxEditingControl .

8
ответ дан 9 December 2019 в 20:48
поделиться

Метод DataGridView.CommitEdit

Это также может быть полезно для вас. Обработайте событие CurrentCellDirtyStateChanged, проверьте наличие Dirty и зафиксируйте изменение. Затем вы можете использовать свойство CurrentCell для доступа к выбранному значению (при условии, что оно было проверено).

4
ответ дан 9 December 2019 в 20:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: