Модераторы: gambit, Partizan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> DataGrid и default value, Как установить значение по-умолчанию 
:(
    Опции темы
Гость_Step
  Дата 23.7.2005, 15:50 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Задача следующая:
есть DataGrid, кот отображает таблицу ! у таблицы есть поле ID, кот. не светиться в Grid-е, как сделать так чтоб при событии "ввод новой строки" по умолчанию устанавливать в колонку ID какое-либо значение, причем нужно делать во время редактирования новой строки, т.к. на Grid-е стоит фильтр типа: filter='partID='+id;
Если вводить несколько новых строк то они исчезают с экрана т.к. работает фильтр, а значение по умолчанию для ID=NULL ?
smile
  Вверх
mr.DUDA
Дата 23.7.2005, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 24
Всего: 232



Всё дело в датасете, чьи данные отображает и редактирует датагрид. Нужно выставить в схеме данных датасета (ну или в рантайме, если датасет нетипизированный) автоинкрементацию поля ID, либо задать там же дефолтное значение.

Первый способ - настройка датасета в рантайме. Я создал новую таблицу, но ты должен взять ((DataSet)myDataGrid.DataSource).Tables[0], или какая там таблица редактируется в гриде. Вот исходник, который настраивает default value и автоинкремент (выбери, что больше по душе):
Код
using System;
using System.Data;

namespace ConsoleApplication2
{
    public class Test
    {
        public static void Main()
        {
            DataTable table = new DataTable();
            DataColumn colID = table.Columns.Add("ID", typeof(long));
            DataColumn colText = table.Columns.Add("Text", typeof(string));
            
            // настройка автоинкремента колонки
            colID.AutoIncrement = true;
            colID.AutoIncrementSeed = 100; // начнём нумерацию со ста

            // настройка дефолтного значения
            colText.DefaultValue = "Default text";

            for(int i=0; i<10; i++)
            {
                DataRow row    = table.NewRow();
                Console.WriteLine(row["ID"].ToString() + "," + row["Text"].ToString());
            }
        }
    }
}


Второй способ - изменения вносятся в XSD-схему датасета, в окне XML-представления схемы. Можно сделать колонку с автоинкрементом (счётчик):
Код

<xs:element name="ID" type="xs:long" minOccurs="0" msdata:AutoIncrement="true" />


или задать дефолтное значение колонке:
Код

<xs:element name="ID" type="xs:long" minOccurs="0" default="1" />



--------------------
user posted image
PM MAIL WWW   Вверх
Гость_Step
Дата 27.7.2005, 09:57 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо ! заработало. Только у меня не DataSet используется в гриде а DataView!
работает и так:

(DataView)(myDataGrid.DataSource).Table.Columns["nameid"].defaultValue=5;

smile
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка Windows Forms | Следующая тема »


 




[ Время генерации скрипта: 0.0414 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.