Программирование на C#

himera

Ословед
Представь себе что другой пользователь вставил в таблицу N записей в разных местах. Теперь вопрос: "Какой стал номер строки теперь?"

В общем в базах данных такой вопрос как порядковый номер строки в таблице не имеет смысла.
В ADO.NET пользователи вобщето не работают напрямую с базой. а работают с копией её части в оперативной памяти клиента. а изменения вносятся при помощи транзакции. Так что если другой пользователть вставит n строк в таблицу. номер строки не изменится.
 

himera

Ословед
Я уже думал насчет первичного ключа, но мне не очень подходит это.. Используется что-то подобие ключа. Точнее столбец с id-номерами объектов, но они не последовательные, т.е. могут быть с пропусками.
Например: 1, 2, 3, 5, 7, 8, 9.
По-другому, как сравнение со значением находящимся в ячейке, я не вижу решения.


У меня немного другая ситуация, напрямую данные в датагрид добавить нельзя, а используется как информационная таблица. Добавление происходит в другой форме и информации, не отображаемой в таблице по большей части, т.е. отображается самый минимум.

Я может как-то допотопно делаю или глупо :), не стоит судить строго.
Если чесно я вобще не понимаю в чём проблема. Модель данных ADO исключает впринцыпе большую часть глупых ситуаций. А при помощи великово и могучего SQL можно сделать всё. Я бы посоветовал освежить познания в теории баз данных. И по технологии ADO.
 

Serge

Ословед
Я может как-то допотопно делаю или глупо :), не стоит судить строго.
Возможно нужно поподробнее описать задачу. Не совсем понятно - используется ли какая-то база данных или требуется просто отображение табличных данных на форме...

В ADO.NET пользователи вобщето не работают напрямую с базой. а работают с копией её части в оперативной памяти клиента. а изменения вносятся при помощи транзакции. Так что если другой пользователть вставит n строк в таблицу. номер строки не изменится.
можно и напрямую слать SQL запросы, дело вкуса.
 

himera

Ословед
можно и напрямую слать SQL запросы, дело вкуса.
Я считаю, что впринцыпе важен результат. Если программа работает. Максимально невосприимчива к сбоям и быстро выполняет операции. Не важно как это сделано. особенно для конечного пользоватля. Иногда вкус упирается в язык программирования. И приходится вкус на второй план убирать.
 

TAPAHOB_Х@й

Ословед
Награды
5
как вам эта бета десятой студии? так-же тормозит как и предидущая?
у меня всё некак скачаться не может :[
 

strelok

Ословед
Имеется таблица данных заполненная, 2 столбца: имя и адрес домашний. В текстбокс вводятся первые буквы улицы, нужно вывести массив, содержащий улицы содержащие эти буквы, но не вводя полного адреса
Попробывал:
Код:
string filterStr=string.Format("Adress= '{0}'",txtAdr.Text);
DataRow[] makes = table.Select(filterStr);
Но тут фильтрация происходит только по полному адресу, значению ячейки.
Надеюсь, нормально описал. Как реализовать оное?
 

Бретон

Ословед
как вам эта бета десятой студии? так-же тормозит как и предидущая?
у меня всё некак скачаться не может :[

а мне очень понравилася) довольно быстренькая и дизайн стал значительно лучше (в сравнении с 2008) так шо просто приятно шото делать :crazy2:
известно когда выйдет полная версия? в самой студии ораничение на 245 дней.... О_о... изврат для XE
 

Serge

Ословед
Имеется таблица данных заполненная, 2 столбца: имя и адрес домашний. В текстбокс вводятся первые буквы улицы, нужно вывести массив, содержащий улицы содержащие эти буквы, но не вводя полного адреса
Попробывал:
Код:
string filterStr=string.Format("Adress= '{0}'",txtAdr.Text);
DataRow[] makes = table.Select(filterStr);
Но тут фильтрация происходит только по полному адресу, значению ячейки.
Надеюсь, нормально описал. Как реализовать оное?

чисто интуитивно могу предложить написать "Address LIKE '{0}%'" проверить пока возможности нет.
 
а мне очень понравилася) довольно быстренькая и дизайн стал значительно лучше (в сравнении с 2008) так шо просто приятно шото делать :crazy2:
известно когда выйдет полная версия? в самой студии ораничение на 245 дней.... О_о... изврат для XE

баги есть там заметные? вылеты и прочее?
 

Бретон

Ословед
иногда крашилося при запуске WPF приложение с ошибкой svhost.exe
ну зависло при попытке запуска, когда я в xaml забыл убрать стиль окна, сделав его абсолютно прозрачным... ничего особо критичного :crazy2:
а так все круть) мне понравилося. Дизайн удобный и приятный
 

TAPAHOB_Х@й

Ословед
Награды
5
у меня крашилась при попытке вызова справки :D
 

    Бретон

    очки: 22
    лол) мне казалося тама нет мсдн в поставке) если не считать тот странный хелп 3.0 екзё O_o_O

strelok

Ословед
Необходимо обратиться дочерней форме к переменным\контролам родительской.
При событии нажатия кнопки, передаю ссылку на родительскую:
Код:
FormAuth Auth = new FormAuth();
            Auth.ShowDialog(this);
В дочерней:
Код:
private MainForm parentForm;
        
        public FormAuth(MainForm parentForm)
        {
            InitializeComponent();
            this.parentForm = parentForm;
        }
При обращении, например, к переменной с родительской:
Код:
label1.Text = parentForm.stroka;
Возникает ошибка:
В экземпляре объекта не задана ссылка на объект.

Самое, что странное, уже пару форм привязаны таким образом и работают нормально. А сейчас новую не могу. В чем дело?
 

Serge

Ословед
вроде все нормально. если стоит цель передачи строки из родительской формы в дочернюю, то разумнее в дочерней форме сделать публичное свойство-строку или передавать строку в конструктор.
 

    strelok

    очки: 21
    Спасибо, Вам, за помощь..

strelok

Ословед
вроде все нормально. если стоит цель передачи строки из родительской формы в дочернюю, то разумнее в дочерней форме сделать публичное свойство-строку или передавать строку в конструктор.
Ну в этом ситуации я так и поступил.. А как тогда можно реализовать редактирование этой строки в дочерней, точнее чтоб результат вернулся в родительскую?
Передача ссылки? -Если да, то можно с маленьким примером?
 

Бретон

Ословед
Serge,
начал юзать TPL и у мя возникло 2-ва вопроса если мона :crazy2: :

1.
нужно ли делать lock вокруг вставки в Heap?
А то с arr = Calculate(i) не надо . А сдеся аналогично?

Код:
ArrayList Heap = new ArrayList() {};

Parallel.For(0, Size, i =>
{
       k = Calculate(i);
       Heap.Add(k);
});


2.
у меня 2 ядра . и допустим цикл из N итераций >> 2.

TPL разобьет, как я понял в общем случае, на 2 потока на каждое ядро по N/2 итераций. и в случае чего будет автобалансировка, если какието итерации слишком долго выполняются.

тогда почему когда я запускаю цикл Parallel.For и проверяю сколько потоков запрашивая:
Thread.CurrentThread.ManageThreadId,
то часто получаю не 2 различных Id, а 3 и 4? :idontno: сума сводит :crazy2:
 

Serge

Ословед
Ну в этом ситуации я так и поступил.. А как тогда можно реализовать редактирование этой строки в дочерней, точнее чтоб результат вернулся в родительскую?
Передача ссылки? -Если да, то можно с маленьким примером?
Судя по тому что используется модальное дочернее окно, то возврат строки имеет смысл после закрытия дочернего окна, например

Код:
// в дочерней форме заводится публичное свойство, например так
public string MyText
{
  get { return lblMyText.Text; }
  set { lblMyText.Text = value; }
}
 
// в дочерней форме кнопкам назначаем диалоговые результаты
 
// в родительской форме оформляем вызов примерно так
MyForm child = new MyForm();
child.MyText = this.stroka;
DialogResult result = child.ShowDialog();
if (result == DialogResult.OK)
{
  this.stroka = child.MyText;
}

Если нужно изменение значений родительского окна при открытом дочернем - наверное можно поизвращаться через ссылки.

2 Бретон - тут я ничего не подскажу, не занимался этим :shuffle:
 

strelok

Ословед
Таблица (DataTable) заполняется из файла, затем присваевается гриду (грид до этого не имеет никаких столбцов и вообще данных). Как можно изменить ширину колонки грида программно, а не растягивая\сужая?
 

Alexandr172

Ословед
Re

Таблица (DataTable) заполняется из файла, затем присваевается гриду (грид до этого не имеет никаких столбцов и вообще данных). Как можно изменить ширину колонки грида программно, а не растягивая\сужая?

Среди свойств колонки есть и ее ширина...
 
Сверху