簡體   English   中英

動態添加的文本框控件值未更新

[英]Dynamic added textbox control value is not updated

我在一個頁面上有一個占位符,該頁面上裝有一個動態表,該表具有動態添加的文本框(其中填充了與語言相關的數據)。 占位符在每個page.load上都填充有數據,但根據用戶使用的語言選擇,會填充不同的數據。 在初始加載時,將英語設置為有效,但是當用戶更改為法語時,文本框中的數據不會從英語更改為法語。 但是當我調試時,我可以看到法語已添加到每個文本框中。 我試圖禁用表上的viewstate,但這沒有幫助。 我還使用PlaceHolder.Controls.Clear(),然后再次向其添加控件/數據。 它們都不起作用,仍然在每個文本框中顯示初始英文值。 是什么原因造成的?

    Protected Function FindTextBoxValues(ByRef ParentControl As Control, ByRef MyList As List(Of String)) As List(Of String)
    For Each ctrl As Control In ParentControl.Controls
        If TypeOf ctrl Is TextBox Then
            ' do something
            Dim CurrCtrl As New TextBox()
            CurrCtrl = CType(ctrl, TextBox)
            MyList.Add(CurrCtrl.Text)
        ElseIf ctrl.HasControls Then
            FindTextBoxes(ctrl, MyList)
        End If
    Next
End Function

做了一個小例子。

首先添加占位符

<asp:PlaceHolder ID="PlaceHolder1" runat="server"></asp:PlaceHolder>

然后制作語言下拉菜單。 AutoPostBack為true

<asp:DropDownList ID="ddlLanguage" runat="server" OnSelectedIndexChanged="ddlLanguage_SelectedIndexChanged" AutoPostBack="true"> 
    <asp:ListItem Text="english" Value="english"></asp:ListItem>
    <asp:ListItem Text="french" Value="french"></asp:ListItem>
</asp:DropDownList>

Page_Init

protected void Page_Init(object sender, EventArgs e)
{
    TextBox tb = new TextBox();
    tb.ID = "test1";
    if (!Page.IsPostBack)
    {
        tb.Text = "this is a English";
    }
    PlaceHolder1.Controls.Add(tb);
}

此事件觸發並在占位符內找到控件。

protected void ddlLanguage_SelectedIndexChanged(object sender, EventArgs e)
{
    TextBox ctrl = (TextBox)PlaceHolder1.FindControl("test1");
    DropDownList ddl = (DropDownList)sender;
    if (ddl.SelectedValue == "english")
    {
        ctrl.Text = "this is a English";
    }
    else if (ddl.SelectedValue == "french")
    {
        ctrl.Text = "this is a French";
    }
}

我自己進行了測試,以確保它可以正常工作。 希望它能對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM