簡體   English   中英

從轉發器asp.net c中的文本框中獲取值

[英]get value from textbox within repeater asp.net c#

我一直試圖讓這個工作幾個小時,但谷歌沒有任何東西可以幫助我解決問題。

我有一個非常簡單的轉發器控件:

   <asp:Panel ID="userDefDiv" Visible="false" runat="server">
                <asp:Repeater ID="userDefRepeater" EnableViewstate="false" runat="server">
                    <ItemTemplate>
                        <asp:TextBox ID="TextBox1" runat="server" EnableViewState="false"></asp:TextBox><br/>
                    </ItemTemplate>
                </asp:Repeater>
            </asp:Panel>

userDefDiv面板位於另一個面板內,該面板位於contentPLaceHolder中。 userDefDiv的父面板沒有“enableviewstate =”false“”。

所以。 這個頁面上的所有內容都發生在幾個linkbuttons_click之后。 所以在page_load期間沒有任何反應。 在我點擊另一個鏈接按鈕后,我想從轉發器內的不同文本框中獲取數據。

C#代碼:

這是創建所有轉發器項的代碼。

public void createUserDef()
{
        DataTable userDefData;
        userDefData = ..... (data from Database.)

            userDefDiv.Visible = true;
            userDefRepeater.DataSource = userDefData;
            userDefRepeater.DataBind();
}

linkbutton的代碼:

protected void linkButton_Click(object sender, EventArgs e)
{
    createUserDef();

    Label2.Visible = true;
    foreach (RepeaterItem item in userDefRepeater.Items)
    {
        TextBox box = (TextBox)item.FindControl("TextBox1");
        string b = box.Text;
        Label2.Text += b + " . ";
    }
}

如您所見,我在點擊期間再次創建轉發器。 但我唯一可以在label2中閱讀。 是一個“。”的數字,在每個文本框的點上。 但是文本框中的文字是空的..我做錯了什么?

謝謝閱讀! 馬蒂亞斯

解:

  1. 將EnableVIewState =“true”添加到文本框和轉發器。

  2. 在獲取值之前不要調用dataBind()。

謝謝!

您需要將EnableViewState設置為“true”,以使鏈接按鈕在轉發器中正常工作

暫無
暫無

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

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