Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 12.07.2016
Сообщений: 1

[WPF] Как в DataGrid очистить ячейку с форматом Decimal в окне пользователем?

19.04.2017, 09:54. Показов 1071. Ответов 1

Студворк — интернет-сервис помощи студентам
Здравствуйте, начал изучать WPF по разнообразным урокам, но никак не могу найти и понять как работает данная схема (возможно валидатор)

Создал на странице DataGrid
Кликните здесь для просмотра всего текста

XML
1
2
3
4
5
6
7
8
<DataGrid x:Name="MaterialGrid" Margin="0" AutoGenerateColumns="False" CanUserAddRows="False" CanUserDeleteRows="False">
                        <DataGrid.Columns>
                            <DataGridTextColumn Binding="{Binding item}" Header="Материал" IsReadOnly="False" />
                            <DataGridTextColumn Binding="{Binding description}" Header="Наименование" IsReadOnly="True"/>
                            <DataGridTextColumn Binding="{Binding MatlQty}" Header="Кол." IsReadOnly="True"/>
                            <DataGridTextColumn Binding="{Binding UM}" Header="Е/И" IsReadOnly="True"/>
                            <DataGridTextColumn Binding="{Binding QtyExpence}" Header="Списать" IsReadOnly="False">
                            </DataGridTextColumn>


Далее в коде привязываю DataTable
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
 public void LoadMatlTable()
        {
            string sql = 
                "SELECT item AS item"
                + " ,[description] as [description]"
                + " ,[matl_qty] as MatlQty"
                + " ,u_m AS UM"
                + " ,[qty_expence] AS QtyExpence"
                + " ,flag AS flag"
                + " ,qty_issued AS QtyIssued"
                + " ,job AS job"
                + " ,suffix AS suffix"
                + " ,oper_num AS OperNum"
                + " ,whse AS whse"
                + " ,UserID AS UserID"
                + " ,Id AS Id"
                + " FROM MyTable" ;
            SqlConnection connection = null;
            try
            {
                //DataTable MatlTable = new DataTable();
                //SqlDataAdapter MatlAdapter = new SqlDataAdapter();
                MatlTable.Clear();
                connection = new SqlConnection(connectionString);
                var sqlCmd = new SqlCommand(sql, connection);
                MatlAdapter.InsertCommand = new SqlCommand("NMwpf_InsertPendingMaterialSp", connection);
                MatlAdapter.InsertCommand.CommandType = CommandType.StoredProcedure;
                MatlAdapter.InsertCommand.Parameters.Add(new SqlParameter("@job", SqlDbType.NVarChar, 50, "job"));
                MatlAdapter.InsertCommand.Parameters.Add(new SqlParameter("@suffix", SqlDbType.Int, 50, "suffix"));
                MatlAdapter.InsertCommand.Parameters.Add(new SqlParameter("@oper_num", SqlDbType.Int, 0, "OperNum"));
                MatlAdapter.InsertCommand.Parameters.Add(new SqlParameter("@whse", SqlDbType.NVarChar, 0, "whse"));
                MatlAdapter.InsertCommand.Parameters.Add(new SqlParameter("@UserID", SqlDbType.Int, 0, "UserID"));
                SqlParameter parameter = MatlAdapter.InsertCommand.Parameters.Add("@Id", SqlDbType.Int, 0, "Id");
                parameter.Direction = ParameterDirection.Output;
                connection.Open();
                MatlAdapter = new SqlDataAdapter(sqlCmd);
                MatlAdapter.Fill(MatlTable);
                MatlTable.Columns["QtyExpence"].AllowDBNull = true;
                MaterialGrid.ItemsSource = MatlTable.DefaultView;
                MatlTable.ColumnChanged += new DataColumnChangeEventHandler(Qty_Change);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
            finally
            {
                if (connection != null)
                    connection.Close();
            }
        }

Столбце qty_issued AS QtyIssued имеет тип (decimal(18,3), null)

При изменении непосредственно в окне значений этого столбца DataGrid не дает ввести данные, не соответствующие культуре (не целые только с точкой), нельзя вводить буквы - это все прекрасно, но так же не дает ввести пустое значение, хотя выгрузка из базы часто происходит как раз со значением Null.

Вопрос: как разрешить ввод пустых значений?
А то происходит следующим образом: ввожу число, потом удаляю число, а система не дает его очистить
Кликните здесь для просмотра всего текста

Название: QIP Shot - Screen 002.png
Просмотров: 40

Размер: 9.0 Кб
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.04.2017, 09:54
Ответы с готовыми решениями:

[WPF] Заполнение DataGrid пользователем
Добрый день. Являюсь новичком в WPF. Задача простая - закинуть на форму DataGrid, чтобы пользователь её заполнял. DataGrid добавил, но он...

А как можно в интервале A1:Z1 найти ячейку с форматом Денежный?
А как можно в интервале(exel) A1:Z1 найти ячейку с форматом 'Денежный' и скопировать ее значение в дугой exel файл ('A1')? (VBA)

Как зеркально отобразить dataGrid одного окна в dataGrid в другом окне?
Здравствуйте. Столкнулся с проблемой. Не знаю, как отобразить зеркально dataGrid одного окна, в dataGrid другого окна? Возможно ли...

1
33 / 33 / 24
Регистрация: 02.05.2014
Сообщений: 159
20.04.2017, 10:13
C#
1
decimal?
или
C#
1
Nullable<decimal>
Таким образом, можно в decimal писать null.
Можете также привязать к столбцу конверте. Для этого необходимо реализовать IValueConverter
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.04.2017, 10:13
Помогаю со студенческими работами здесь

Как очистить ячейку в DataGridView?
как очистить ячейку выбранной строки 3 столбца в datagridview? Добавлено через 13 минут 2. и как запретить изменение в 3 столбце?

Как очистить первую ячейку в таблице?
Вот код: &lt;html&gt; &lt;TABLE border=&quot;1&quot;&gt; &lt;?php $y = 12; $x = 10; $c = 1; for ($i = 0; $i &lt; $y; $i++){ echo&quot;&lt;TR&gt;&quot;; for ($j =...

DataGrid: как в одну ячейку вместить несколько значений
Подскажите пжл, как в одну ячейку DG вместить несколько значений ,которые в дальнейшем можна будет использовать как отдельные? мне...

Как в DataGrid можно указать colspan=2 на ячейку таблицы ?
Как в DataGrid (ASP.NET) можно указать colspan=2 на ячейку таблицы ?

Как подключить БД к DataGrid (WPF)
Я новичок в работе с БД. Скачал Workbench, создал базу и таблицу, а в ней столбцы. В Visual Studio в проекте на WPF на форме есть элемент...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru