Функция, которая заполняет выпадающий список в шаблоне редактирования вида сетки - PullRequest
1 голос
/ 08 октября 2010

Я пытаюсь использовать разные опции для разных пользовательских ролей.Вот мой код:

Private Function GetApprovedBy() As String
        If User.Identity.Name = "officer" Then
            Return "Approved by Officer"
        ElseIf User.Identity.Name = "manager" Then
            Return "Approved by Manager"
        Else
            Return String.Empty
        End If
    End Function

Тогда внутри моих шаблонов gridview у меня есть:

  <EditItemTemplate>
                    <asp:DropDownList ID="ApprovalEdit" runat="server">
                       <asp:ListItem>Rejected</asp:ListItem>
                       <asp:ListItem Text=<%= GetApprovedBy() %>></asp:ListItem>

                    </asp:DropDownList>
                </EditItemTemplate>

Когда я запускаю страницу, я получаю

"Literal content ('<asp:ListItem Text=') is not allowed within a 'System.Web.UI.WebControls.ListItemCollection'."

Есть лиальтернативный способ достижения этого?Желательно без БД.

Заранее спасибо !!

Редактировать: Я также пытался

<<code>asp:ListItem><%= GetApprovedBy() %></asp:ListItem>

, который не удалось с ошибкой 'Кодблоки не поддерживаются в этом контексте '

Ответы [ 3 ]

3 голосов
/ 08 октября 2010

осторожно с этим: при связывании (сетка / список / повторитель) используйте <%# %>, а не <%= %>

вот пример того, что говорит @adrianos:

Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As GridViewRowEventArgs)
    If e.Row.RowType = DataControlRowType.DataRow Then
        Dim ddl As DropDownList = CType(e.Row.FindControl("ApprovalEdit"), DropDownList)
        ' and then do the binding or add some items 

    End If
End Sub

(vb! Aaagghhh мои глаза T_T)

2 голосов
/ 08 октября 2010

Вы можете создать метод, который запускается в событии Gridview RowDataBound.

В этом методе найдите свой выпадающий список по идентификатору. Если вы найдете его, проверьте свой тип пользователя (менеджер / сотрудник) и программно добавьте соответствующие listItems.

0 голосов
/ 05 января 2012

Я верю, что вы хотите это:

<% ddlRooms.Items.Clear();

                       for (int i = 1; i <= 3; i++)
                       {
                           ddlRooms.Items.Add(new ListItem(i.ToString()  , i.ToString()));
                       }
                    %>
                        <asp:DropDownList ID="ddlRoomsCountToBook" runat="server">
                        </asp:DropDownList>

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

...