Какое событие gridview использовать для добавления элементов в выпадающий список, используемый в шаблоне редактирования? - PullRequest
1 голос
/ 07 октября 2010

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

Офицер будет видеть статус «Одобрено Офицером». Директор будет видеть статус «Одобрено директором»

Я пытаюсь программно добавить их в выпадающий список, который есть в шаблоне редактирования моего вида на сетку (ApprovalsGrid). Вот мой код:

   Protected Sub ApprovalsGrid_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles ApprovalsGrid.RowUpdating
        Dim ApprovalEditDD As DropDownList = CType(ApprovalsGrid.Rows(ApprovalsGrid.EditIndex).FindControl("ApprovalEdit"), DropDownList)
        If User.Identity.Name = "officer" Then
            ApprovalEditDD.Items.Add("Approved by Officer")
        End If
    End Sub

Я не получаю никаких ошибок. Но получите пустой выпадающий список без элементов. Я использую правильное событие?

Ответы [ 2 ]

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

Почему бы не попробовать это

<script runat=server>
    string GetApprovedBy()
    {
        if (User.Identity.Name == "officer")
        {
            return "Approved by Officer";
        }
        else if(User.Identity.Name == "some other name")
        {
            return "something else";
        }
        else return string.Empty;
    } 
</script>
<asp:GridView runat="server">
    <Columns>
        <asp:TemplateField>
            <EditItemTemplate>
                <asp:DropDownList runat="server">
                    <asp:ListItem Text='<%= GetApprovedBy() %>' />
                </asp:DropDownList>
            </EditItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

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

1 голос
/ 07 октября 2010

Попробуйте событие: ApprovalsGrid_RowEditing вместо ApprovalsGrid_RowUpdating. Событие GridView RowUpdating возникает, когда пользователь отправляет свои обновления в источник данных, но до того, как эти обновления действительно произойдут (RowUpdated запускается после того, как обновления происходят). RowEditing запускается, когда GridView входит в режим редактирования, это, кажется, подходящее место, чтобы попытаться связать ваш выпадающий список. Тем не менее, будьте осторожны с PostBacks и другими вещами, чтобы убедиться, что ваши опции в списке остаются там, так как я не настроил весь процесс, чтобы попробовать его.

Плюс здесь ссылка MSDN , которая объясняет все различные события GridView (их много).

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