2011-12-09 41 views
5

我一直试图让这个工作几个小时,但没有任何来自谷歌可以帮助我解决这个问题。从中继器的文本框中获取值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(); 
} 

为LinkBut​​ton的代码:

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。是一个“。”,每个文本框的点。 但文本框中的文本是空的。 我在做什么错?

感谢您的阅读! 马蒂亚斯

SOLUTION:

  1. 添加的EnableViewState = “true” 将文本框&中继器。

  2. 在获取值之前不要调用dataBind()。

谢谢!

回答

4

您需要将EnableViewState设置为'true'才能使链接按钮在中继器中正常工作

+0

中继器中没有链接按钮。 linkbutton在userDefDiv面板之外。 – Easyrider

+1

哦,我明白了 - 我被点击方法名称所愚弄。无论如何,相同的答案应该工作。除非EnableViewState = true,否则转发器中文本框的值将不可用。 – Ray

+0

它不起作用。 – Easyrider

相关问题