DetailsView изменить текст на метку на событие ItemInserted

У меня есть ярлык в DetailsView. Мне нужно изменить свойство Text этой метки внутри DetailsView после того, как событие ItemInserted было инициировано.

Скрипт не выдает никакой ошибки, но Метка не меняет своего свойства текста. Есть идеи, что я делаю не так?

Спасибо за ваше время!

Разметка:

<asp:DetailsView ID="uxInsertAuthorInput" runat="server" AutoGenerateRows="False"
        DataKeyNames="AuthorId" DataSourceID="EntityDataSourceCreateAuthor" DefaultMode="Insert"
        OnItemInserting="uxInsertAuthor_ItemInserting" OnItemInserted="uxInsertAuthorInput_ItemInserted">
    <Fields>
        <asp:TemplateField HeaderText="First Name" SortExpression="FirstName">
            <ItemTemplate>
                <asp:Label ID="uxFirstNameDisplayer" runat="server" Text='<%# Bind("FirstName") %>' />
            </ItemTemplate>
            <InsertItemTemplate>
                <asp:TextBox ID="uxFirstNameInput" runat="server" Text='<%# Bind("FirstName") %>' />
                <asp:RequiredFieldValidator ID="uxRequiredFieldValidatorFirstName" runat="server"
                    ControlToValidate="uxFirstNameInput" ErrorMessage="First Name Field is required">*</asp:RequiredFieldValidator>
            </InsertItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Last Name" SortExpression="LastName">
            <ItemTemplate>
                <asp:Label ID="uxLastNameDisplayer" runat="server" Text='<%# Bind("LastName") %>' />
            </ItemTemplate>
            <InsertItemTemplate>
                <asp:TextBox ID="uxLastNameInput" runat="server" Text='<%# Bind("LastName") %>' />
                <asp:RequiredFieldValidator ID="uxRequiredFieldValidatorLastName" runat="server"
                    ControlToValidate="uxLastNameInput" ErrorMessage="Last Name Field is required">*</asp:RequiredFieldValidator>
            </InsertItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="UserId" SortExpression="UserId">
            <InsertItemTemplate>
                <asp:DropDownList ID="uxUserListSelector" runat="server" />
                <asp:Label ID="uxAllert" runat="server" Text="Label" />
            </InsertItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="Profile" SortExpression="ContentAuthor">
            <ItemTemplate>
                <asp:Label ID="uxContentAuthorDisplayer" runat="server" Text='<%# Bind("ContentAuthor") %>' />
            </ItemTemplate>
            <InsertItemTemplate>
                <asp:TextBox ID="uxContentAuthorInput" runat="server" Text='<%# Bind("ContentAuthor") %>' />
            </InsertItemTemplate>
        </asp:TemplateField>
        <asp:TemplateField HeaderText="NoteInternal" SortExpression="NoteInternal">
            <ItemTemplate>
                <asp:Label ID="uxNoteInternalDisplayer" runat="server" Text='<%# Bind("NoteInternal") %>' />
            </ItemTemplate>
            <InsertItemTemplate>
                <asp:TextBox ID="uxNoteInternalInput" runat="server" Text='<%# Bind("NoteInternal") %>' />
            </InsertItemTemplate>
        </asp:TemplateField>
        <asp:CommandField ShowInsertButton="True" />
    </Fields>
</asp:DetailsView>

Код-за:

protected void uxInsertAuthorInput_ItemInserted(object sender, DetailsViewInsertedEventArgs e)
{
    String FirstName = e.Values["FirstName"].ToString();
    String LastName = e.Values["LastName"].ToString();
    uxMessageDisplayer.Text = string.Format("Author: {0} {1} has been added.", FirstName, LastName);

    // problem is here:
    Label myAllert = (Label)uxInsertAuthorInput.FindControl("uxAllert");
    myAllert.Text = "TEST";
}

1 ответ

Решение

Вам нужно использовать ItemUpdated событие подробного просмотра, а не ItemInserted событие

ItemUpdated: Происходит при нажатии кнопки "Обновить" в элементе управления DetailsView, но после операции обновления. отсюда

Я уверен, что это решит проблему на 100%

Другие вопросы по тегам