powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Отслеживание выхода за границы размера полей в элементах управления
9 сообщений из 9, страница 1 из 1
Отслеживание выхода за границы размера полей в элементах управления
    #38315544
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброе время суток!

При работе, напр с текстовыми полями, часто складывается ситуация что введённый текст оказался длиннее размера поля в базе. До сих пол лечил это установлением максимальной длины текста в элементе управления. Но мучает подозрение что процесс можно автоматизировать. Подскажите идею.

Спасибо.
...
Рейтинг: 0 / 0
Отслеживание выхода за границы размера полей в элементах управления
    #38315586
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenko,

..ну, например, использовать в SQL-таблицах тип поля nvarchar(max), если стоит задача не потерять данные, введенные пользователем ...
...
Рейтинг: 0 / 0
Отслеживание выхода за границы размера полей в элементах управления
    #38315591
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,

не, это не решение. Я думал, может как то из смемы данных можно автоматом ограничивать длину текстов вводимых в элементы управления.
...
Рейтинг: 0 / 0
Отслеживание выхода за границы размера полей в элементах управления
    #38315602
carrotik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenko,

...ну, тогда вот тут посмотрите (но это тупо из гугля)

http://diegworld.blogspot.com/2009/10/automatic-setting-of-maxlength-property.html
...
Рейтинг: 0 / 0
Отслеживание выхода за границы размера полей в элементах управления
    #38315622
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,

пасиб, похоже на нужное
...
Рейтинг: 0 / 0
Отслеживание выхода за границы размера полей в элементах управления
    #38315854
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
carrotik,
У меня в качестве DataSource выступает BindingSource поэтому допилил немного код. Настораживает одно, у текстовых полей с ограниченной длиной ( напр.varchar(60) ) Columns[bindedFieldName].MaxLength равен -1. Почему -1?
Код: 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.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
        private void this_CollectionChange(Object sender, CollectionChangeEventArgs e)
        {
            if (this.AutoToolTip)
                this.toolTipText = SysLib.GetToolTipText(this, "Text");

            // .......... MaxLength
            if (AutoMaxLength && e != null && e.Action == CollectionChangeAction.Add)
            {
                int bindedFieldMaxLength = this.MaxLength;

                Binding bindingObj = (e.Element as Binding);

                if (bindingObj != null)
                {
                    if (bindingObj.DataSource != null &&
                        bindingObj.BindingMemberInfo != null)
                    {
                        DataTable sourceTable = null;
                        DataView sourceView = null;
                        BindingMemberInfo bindingMemberInfoObj =
                           bindingObj.BindingMemberInfo;

                        if (bindingObj.DataSource is BindingSource)
                        {
                            if ((bindingObj.DataSource as BindingSource).List != null)
                            {
                                sourceView = ((bindingObj.DataSource as BindingSource).List as DataView);
                                sourceTable = ((bindingObj.DataSource as BindingSource).List as DataTable);
                            }
                        }
                        else
                        {
                            sourceView = (bindingObj.DataSource as DataView);
                            sourceTable = (bindingObj.DataSource as DataTable);
                        }

                        if ((sourceTable != null || sourceView != null) &&  //----||
                             bindingMemberInfoObj != null)
                        {

                            string bindedFieldName = bindingMemberInfoObj.BindingField;
                            if (!string.IsNullOrEmpty(bindedFieldName))
                            {

                                if (sourceTable != null &&
                                     sourceTable.Columns[bindedFieldName].MaxLength > 0)
                                {
                                    bindedFieldMaxLength =
                                       sourceTable.Columns[bindedFieldName].MaxLength;
                                }
                                if (sourceView != null &&
                                   sourceView.Table.Columns[bindedFieldName].MaxLength > 0)
                                {
                                    bindedFieldMaxLength =
                                       sourceView.Table.Columns[bindedFieldName].MaxLength;
                                }
                                if (this.MaxLength != bindedFieldMaxLength)
                                {
                                    this.MaxLength = bindedFieldMaxLength;
                                }
                            }
                        }
                    }
                }
            }
        }
...
Рейтинг: 0 / 0
Отслеживание выхода за границы размера полей в элементах управления
    #38315902
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Отслеживание выхода за границы размера полей в элементах управления
    #38315979
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da.FillSchema(ds,SchemaType.Source); не помогло :(
...
Рейтинг: 0 / 0
Отслеживание выхода за границы размера полей в элементах управления
    #38316089
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все заработало!
Проблема была в строке:
da_MD_MAIN.FillSchema(ds_MD_MAIN, SchemaType.Source);
надо было ещё таблицу явно указать
da_MD_MAIN.FillSchema(ds_MD_MAIN, SchemaType.Source, "TableName");
и все заработало.

Спасибо кто учавствовал.
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Отслеживание выхода за границы размера полей в элементах управления
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]