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

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

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

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

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

Ответы [ 3 ]

2 голосов
/ 16 августа 2008

Вы можете ДЕЙСТВИТЕЛЬНО обмануть в наше время и взглянуть на новые Динамические Данные, которые поставляются с .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 эта функциональность становилась все более и более упорядоченной.

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

0 голосов
/ 16 августа 2008

Спасибо за ответы, ребята. Похоже, что настройка 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 голосов
/ 16 августа 2008

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...