Здесь нужно пройти несколько шагов - ни один из них не является особенно сложным, но они могут быть немного беспокойными (ИМХО). Хорошая новость заключается в том, что, как только вы запустите эту работу один раз, вам будет легче сделать это снова!
Я предполагаю, что у вас есть <asp:*DataSource>
элемент управления на вашей странице - я предпочитаю ObjectDataSource, но я не думаю, что это имеет значение, я думаю, что SqlDataSource работает одинаково хорошо. Я никогда не пытался сделать это с GridView.DataSource = MyDataSet
в коде позади, поэтому я не знаю, сработает ли это или нет, но я предполагаю, что это не так, поскольку вы не получите правильную двустороннюю привязку что ты хочешь. Этот источник данных снабжает вашу сетку вашими основными данными. Ключевым моментом здесь является то, что ваш запрос к базе данных должен возвращать как текстовое поле Статус, так и идентификатор статуса.
Таким образом, ваш gridview теперь будет выглядеть примерно так:
<asp:objectdatasource runat="server" id="MainDataSource" ... />
<asp:gridview runat="server" id="MyGridView" DataSourceID="MainDataSource">
<Columns>
<asp:TemplateField HeaderText="During Production Status" SortExpression="DuringProductionStatus">
<ItemTemplate>
<asp:Label ID="lblStatus" runat="server"
Text="<%# Bind('Status') %>" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:gridview>
Text="<%# Bind('Status') %>"
- это бит, который вам не хватает, чтобы получить текст статуса в сетку.
Теперь добавьте второй источник данных в вашу разметку, который считывает набор значений из таблицы Status.
<asp:objectdatasource runat="server" id="StatusObjectDataSource" ... />
И добавьте EditItemTemplate в GridView, который связан с источником данных состояния.
<EditItemTemplate>
<asp:DropDownList ID="ddlStatus" runat="server" datavaluefield="StatusID"
datatextfield="Status" DataSourceID="StatusObjectDataSource"
SelectedValue="<%# Bind('StatusId') %>" />
</EditItemTemplate>
SelectedValue="<%# Bind('StatusId') %>"
- это то, что соединяет два набора данных, так что когда вы переворачиваете строку в режим редактирования, в выпадающем списке уже выбран правильный элемент, а когда вы сохраняете его, вы получаете идентификатор статуса, который нужно поместить в ваша база данных.
И все готово.