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

Для примера речь о TextBox, хочу автоматом в ToolTip пихать имя таблицы и поля с которыми произведён Binding.
(все происходит в классе TextBox)

Как вытащить имя поля разобрался:
Binding binding = this.DataBindings["Text"];
if (binding == null) return;
MessageBox.Show("Имя поля: "+binding.BindingMemberInfo.BindingField);

а как вытащить ещё имя таблицы для этого поля?
binding.BindingMemberInfo.BindingMember содержит то же имя поля
а binding.BindingMemberInfo.BindingPath вообще пустой.

Сам TextBox биндил так:
cmd = new SqlCommand(CommandText, conn);
da = new SqlDataAdapter(cmd);
cb = new SqlCommandBuilder(da);
ds = new DataSet();
da.Fill(ds, "Таблица");
bindingSource= new BindingSource(this.components);
bindingSource.DataSource = ds.Tables["Таблица"];

ctrlTextBox1.DataBindings.Add(new Binding("Text", bindingSource, "Имя_поля"));

Спасибо.
...
Рейтинг: 0 / 0
Как вытащить имя таблицы зная имя поля?
    #38250352
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Mikhail Tchervonenko !
Еще разик объясни, что тебе дано?
Только имя поля?
И ты хочешь найти именя таблиц в которые входит имя поля?
...
Рейтинг: 0 / 0
Как вытащить имя таблицы зная имя поля?
    #38250404
Sarson
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй это

Код: c#
1.
MessageBox.Show("Имя таблицы: " + ((BindingSource)binding.DataSource).DataSource);
...
Рейтинг: 0 / 0
Как вытащить имя таблицы зная имя поля?
    #38250437
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarson,
Получилось примерно так
SetToolTipText вешается на CollectionChange событие элемента
и тогда в ToolTip можно увидеть имя элемента, таблицу и поле с которым он связан.
Подозреваю что до красоты этому коду далеко, но работает.
Код: 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.
        private void SetToolTipText(Object sender, CollectionChangeEventArgs e)
        {
            if (ShowToolTip && this.Parent is PageForm
                && (this.Parent as PageForm).cmpToolTip != null)
            {
                var binding = this.DataBindings["Text"];
                string lsText = "[" + this.Name + "] ";
                if (binding != null)
                {
                    object dataSource = binding.DataSource;

                    var bindingSource = binding.DataSource as BindingSource;

                    if (bindingSource != null)
                    {
                        var dataRowView = bindingSource.Current as DataRowView;
                        if (dataRowView != null)
                        {
                            var row = dataRowView.Row;

                            if (row != null)
                                lsText = lsText + row.Table.ToString();
                        }
                    }

                    lsText = lsText + "." + binding.BindingMemberInfo.BindingField;
                }
                if (lsText.Length > 0)
                    (this.Parent as PageForm).cmpToolTip.SetToolTip(this, lsText);
            }
        }
...
Рейтинг: 0 / 0
Как вытащить имя таблицы зная имя поля?
    #38250550
Фотография Mikhail Tchervonenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sarson,
Ваш вариант тоже работает
тогда примерно так:
Код: 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.
        private void SetToolTipText(Object sender, CollectionChangeEventArgs e)
        {
            if (ShowToolTip && this.Parent !=null && this.Parent is PageForm
                && (this.Parent as PageForm).cmpToolTip != null)
            {
                var binding = this.DataBindings["Text"];
                string lsText = "[" + this.Name + "] ";
                if (binding != null)
                {
                    object dataSource = binding.DataSource;

                    var bindingSource = binding.DataSource as BindingSource;

                    if (bindingSource != null)
                    {
                        lsText = lsText + bindingSource.DataSource.ToString();
                    }

                    lsText = lsText + "." + binding.BindingMemberInfo.BindingField;
                }
                if (lsText.Length > 0)
                    (this.Parent as PageForm).cmpToolTip.SetToolTip(this, lsText);
            }
        }
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как вытащить имя таблицы зная имя поля?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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