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

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

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

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

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

15.08.2008 20:30:37
3 ОТВЕТА
РЕШЕНИЕ

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

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

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

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

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

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

2
15.08.2008 20:42:30

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

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

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

0
15.08.2008 20:39:45

Спасибо за ответы, ребята. Похоже, что настройка 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 все делает в файле codebehind. На высоком уровне вы всегда можете перебрать GridView1.Items для получения каждой строки и item.findControl («ControlID») для запроса значения, хранящегося в каждом элементе, например, после нажатия кнопки «Обновить».

0
11.08.2012 15:45:19