При создании новой записи, как мне заполнить некоторые поля значениями из фильтра? - PullRequest
6 голосов
/ 13 ноября 2009

Я работаю над страницей ASP.NET, которая в основном представляет собой быстрый взлом базы данных. Он используется для внутреннего проекта, и сайт настроен таким образом, чтобы обеспечить доступ к данным для чтения и записи нескольким людям. Раз в неделю мы собираем из него кучу данных, добавляем их в файл XML и отправляем нашим клиентам в качестве обновления приложения. (Эти клиенты не имеют прямого доступа.)

Так как это всего лишь внутренний проект, для его разработки практически нет средств. Поэтому мы решили сделать вещи простыми. Мы сохранили данные в базе данных SQL Server, создали класс Entity Framework для доступа к данным, и мы разместили веб-приложение Dynamic Data Site . По сути, это то, что можно настроить очень быстро и без написания большого количества кода. Это тоже работает довольно хорошо. Особенно круто фильтровать записи по логическим полям и ссылкам на таблицы.

Однако при вводе данных несколько пользователей допускают незначительные ошибки. Они настроили фильтры, чтобы просто отфильтровать подмножество таблицы и затем нажать «Создать», чтобы добавить запись в это подмножество. К сожалению, новая запись не имеет значений по умолчанию в этих фильтрах, поэтому пользователи должны снова установить правильные значения. Очень жаль, что они иногда пропускают это, поэтому некоторые записи заканчиваются с неправильными значениями.

Итак, когда пользователь создает новую запись, как я могу гарантировать, что эта новая запись будет копировать значения фильтра по умолчанию? (И все же позволяют пользователю выбирать другие значения!)

Ответы [ 3 ]

1 голос
/ 19 ноября 2009

Есть ли событие, которое запускается, когда они создают новую запись? Если вы можете реализовать обработчик событий, а текущий набор фильтров - это то, к чему вы можете программно обращаться, то в вашем обработчике событий newRecord () вы должны иметь возможность пройти через каждый из ваших текущих фильтров, определить, какое поле фильтра для, и каково значение фильтра, устанавливая поле новой записи в значение фильтра.

Вот некоторый псевдокод, если он помогает:

NewRecordHandler(object sender, NewRecordEventArgs e)
{
    Record newRecord = (Record)e.NewRecord;
    foreach(Filter filter in m_dataSource.Filters)
    {
        newRecord[filter.FieldName] = filter.Value;
    }
}

Вы должны иметь возможность динамического доступа к свойствам записей, используя либо индекс, либо строку, например, Record["ColumnName"] = value;. В противном случае вы не сможете сделать это в цикле, как показано на рисунке. Надеюсь, это поможет.

1 голос
/ 15 декабря 2009

Здесь ответили: Динамически устанавливаемые значения по умолчанию для таблиц лесов в соответствии с динамическими фильтрами

Проверьте динамические фьючерсы данных "Заполнить шаблоны вставки значениями из фильтров": http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=14475

Кроме того, это сообщение в блоге Стивена Нотона: http://csharpbits.notaclue.net/2009/01/getting-default-values-from-list-page.html

0 голосов
/ 18 ноября 2009

Я бы использовал Object Factory, подключенный к кнопке New при нажатии. Я бы инициализировал Factory либо значениями Filter, либо интерфейсом к представлению, чтобы Factory могла возвращать правильно инициализированные объекты.

...