Лучший способ редактировать записи в ASP.NET?

StackOverflow https://stackoverflow.com/questions/12706

  •  08-06-2019
  •  | 
  •  

Вопрос

Я имею опыт работы с Rails и работаю над проектом ASP.NET (не ASP MVC).Вопрос новичка:какой самый простой способ создать собственный редактор для таблицы записей?

Например:У меня есть несколько строк данных, и я хочу изменить поле «Категория» в каждой — может быть, раскрывающийся список, может быть, ссылку, может быть, пользователь вводит его.

В Rails я перебирал строки, чтобы построить таблицу, и имел форму для каждой строки.Форма будет иметь поле ввода или раскрывающийся список и отправлять данные контроллеру, например «/item/edit/15?category=foo», где 15 — это идентификатор элемента, а новая категория — «foo».

Я новичок в модели ASP.NET и не уверен в «правильном» способе сделать это — это самый простой способ вернуть новые данные и сохранить их.Могу ли я создать собственный элемент управления и добавить его в каждую строку?Любая помощь приветствуется.

Это было полезно?

Решение

Сегодня вы ДЕЙСТВИТЕЛЬНО можете схитрить и взглянуть на новые динамические данные, которые входят в состав .NET 3.5 SP1.У Скотта Гатри есть демонстрационная запись в блоге о том, как быстро и легко это пройдет для вас:

http://weblogs.asp.net/scottgu/archive/2007/12/14/new-asp-net-dynamic-data-support.aspx

Не имея ЭТОГО передового опыта, я бы использовал генератор XSD для создания строго типизированного набора данных, который совпадает с рассматриваемой таблицей.Это также создаст адаптер таблицы, который вы можете использовать для выполнения всех ваших операторов CRUD.

Оттуда привяжите его к DataGrid и используйте все связанные с этим стандартные шаблоны/события, такие как EditIndex, SelectedIndex, RowEditing, RowUpdated и т. д.

Я занимаюсь этим с первых дней существования .NET версии 1.0, и с каждым обновлением Framework подобная функциональность становится все более и более оптимизированной.

РЕДАКТИРОВАТЬ:Я также хочу кратко отметить блог Мэтта Берсета.Я уже давно слежу за многими его вещами, и это здорово!

Другие советы

Есть несколько элементов управления, которые сделают это за вас, с разным уровнем сложности в зависимости от их относительной гибкости.

Традиционным способом сделать это является элемент управления DataGrid, который предоставляет макет таблицы.Если вам нужно что-то более гибкое по внешнему виду, элементы управления DataList и ListView также имеют встроенную поддержку редактирования, вставки или удаления полей.

Проверить Блог Мэтта Берсета несколько отличных примеров элементов управления asp.net в действии.

Спасибо за ответы, ребята.Похоже, что настройка DataGrid — это правильный путь.Для новичков в ASP.NET: вот что я делаю

<asp:DataGrid ID="GridView1" runat="server" AutoGenerateColumns="False">
    <Columns>
        <asp:BoundColumn DataField="RuleID" Visible="False" HeaderText="RuleID"></asp:BoundColumn>
        <asp:TemplateColumn HeaderText="Category">
        <ItemTemplate>
            <!-- in case we want to display an image -->
            <asp:Literal ID="litImage" runat="server">
            </asp:Literal>
            <asp:DropDownList ID="categoryListDropdown" runat="server"></asp:DropDownList>
         </ItemTemplate>
        </asp:TemplateColumn>

    </Columns>
</asp:DataGrid>

Это создает сетку данных.Затем мы можем связать его с источником данных (в моем случае DataTable) и использовать такие вещи, как

foreach (DataGridItem item in this.GridView1.Items)
{
     DropDownList categoryListDropdown = ((DropDownList)item.FindControl("categoryListDropdown"));
     categoryListDropdown.Items.AddRange(listItems.ToArray());
}

для заполнения начального раскрывающегося списка в сетке данных.В этом случае вы также можете получить доступ к item.Cells[0].text, чтобы получить RuleID.

Заметки для себя:Модель ASP.NET выполняет все действия в файле кода программной части.На высоком уровне вы всегда можете перебирать GridView1.Items, чтобы получить каждую строку, и item.findControl("ControlID"), чтобы запросить значение, хранящееся в каждом элементе, например, после нажатия кнопки «Обновить».

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top