DetailsView 将文本更改为 ItemInserted 事件上的标签

发布于 2024-10-03 14:02:50 字数 3903 浏览 0 评论 0原文

我在详细信息视图中有标签。 在触发事件 ItemInserted 后,我需要更改 DetailsView 内此标签的 Text 属性。

脚本不会引发任何错误,但标签不会更改其文本属性。 有什么想法我做错了吗?

感谢您抽出时间!

标记:

<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";
}

I have label within a DetailsView.
I need to change Text property of this Label inside the DetailsView after event ItemInserted has been trigged.

Script does not throws any error, but the Label does not change its text property.
Any ideas what I am doing wrong?

Thanks for your time!

Markup:

<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>

Code-behind:

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";
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅唱々樱花落 2024-10-10 14:02:50

您需要使用detailsview的ItemUpdated事件而不是ItemInserted事件

ItemUpdated:在单击DetailsView控件中的更新按钮时发生,但在单击之后发生更新操作。来自这里

我相信这会100% 解决问题

you need to use ItemUpdated event of detailsview rather than ItemInserted event

ItemUpdated: Occurs when an Update button within a DetailsView control is clicked, but after the update operation. from here

I am sure this will resolve issue 100%

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文