Обновите GridView, используя DropDownList из DataSource - PullRequest
0 голосов
/ 07 декабря 2011

Я использую V2005 C #.

У меня есть GridView на моей странице .aspx, и я могу обновить свою базу данных, используя элементы управления DropDownList в моем EditItemTemplate.

DDL для моего полаcolumn:

    <asp:TemplateField HeaderText="Gender" SortExpression="Gender">
        <EditItemTemplate>
            <asp:DropDownList ID="DropDownList2" runat="server" SelectedValue='<%# Bind("Gender") %>'>
                <asp:ListItem>M</asp:ListItem>  
                <asp:ListItem>F</asp:ListItem>
            </asp:DropDownList>
        </EditItemTemplate>
        <ItemTemplate>
            <asp:Label ID="Label1" runat="server" Text='<%# Bind("Gender") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>

В моем DDL EditItemTemplate для моего столбца Gender я использовал жестко закодированные значения, и это работает.

Однако я попытался реализовать DDL для другого столбца.На этот раз я использовал SqlDataSource, который выбирает данные из другой таблицы, вместо того, чтобы использовать фиксированные значения, но вместо этого они дали мне ошибку: 'DropDownList3' has a SelectedValue which is invalid because it does not exist in the list of items.Parameter name: value

Я также пытался реализовать SelectedValue='<%# Bind("MemberType") %>', но он сделалне работает.

Ниже приведен код моего MemberType DDL EditItemTemplate:

    <asp:TemplateField HeaderText="MemberType" SortExpression="MemberType">
        <EditItemTemplate>
            <asp:DropDownList ID="DropDownList3" runat="server" DataSourceID="SqlDataSource2"
                DataTextField="MemberType" DataValueField="MemberType" SelectedValue='<%# Bind("MemberType") %>'>
            </asp:DropDownList>
        </EditItemTemplate>
        <ItemTemplate>
            <asp:Label ID="Label2" runat="server" Text='<%# Bind("MemberType") %>'></asp:Label>
        </ItemTemplate>
    </asp:TemplateField>

Кто-нибудь знает, что здесь не так?

Спасибо

1 Ответ

0 голосов
/ 07 декабря 2011

Ну ... может быть, это глупый вопрос, но действительно ли значение в списке, возвращаемое в запросе SqlDatasource SELECT? Распространенной проблемой является то, что если в вашем запросе нет значения NULL, его нет в списке, поэтому, как только вы переключаетесь в режим редактирования, вы выдаете ошибку, поскольку значение по умолчанию равно нулю.

В моей библиотеке есть функция Misc, которая принимает ссылку DropDownList и добавляет пустую строку.

ПРАВКА, чтобы добавить код:

Мы используем Telerik Rad Controls, так что это для RadComboBox, но так как этот элемент управления просто расширяет DropDownList (я думаю, они могли расширять TextBox ...), синтаксис для добавления пустого элемента должен быть похож на тот, который я имею ниже.

// If there is already an empty row, we will not add an aditional empty row
        RadComboBoxItem  emptyItem = null;
        emptyItem = rcbObject.FindItemByValue(null) ?? rcbObject.FindItemByValue("");

        if (emptyItem !=null)
            return;

        // Add a Empty(null) item to the dropdown list
        RadComboBoxItem item_null = new RadComboBoxItem();

        item_null.Text = "";
        item_null.Value = null;
        rcbObject.Items.Insert(0, item_null);

Надеюсь, это поможет!

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