代码之家  ›  专栏  ›  技术社区  ›  GibboK

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

  •  1
  • GibboK  · 技术社区  · 14 年前

    我在细节视图中有标签。 触发事件itemsinserted后,我需要在DetailsView中更改此标签的文本属性。

    脚本不会抛出任何错误,但标签不会更改其文本属性。 你知道我做错了什么吗?

    谢谢你的时间!

    标记:

    <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 回复  |  直到 13 年前
        1
  •  1
  •   Muhammad Akhtar    14 年前

    你需要使用 ItemUpdated 详细事件视图而不是 ItemInserted 事件

    项目更新: 在单击DetailsView控件中的更新按钮但在更新操作之后发生。从 here

    我相信这将100%解决问题