2011-12-09 39 views
5

Tôi đã cố gắng để có được điều này làm việc cho một vài giờ bây giờ nhưng không có gì từ google có thể giúp tôi khắc phục vấn đề.lấy giá trị từ hộp văn bản trong vòng lặp asp.net C#

Tôi có một điều khiển lặp rất đơn giản:

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

bảng userDefDiv là bên trong một bảng điều khiển, mà là bên trong ContentPlaceHolder. bảng điều khiển chính cho người dùngDefDiv KHÔNG có "enableviewstate =" false "".

So. Mọi thứ trên trang này xảy ra sau một vài linkbuttons_click. vì vậy không có gì xảy ra trong khi page_load. Và sau khi tôi bấm vào một liên kết khác, tôi muốn lấy dữ liệu từ các hộp văn bản khác nhau nằm trong bộ lặp.

C# mã:

Đây là mã để tạo tất cả các mục lặp lại.

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

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

Mã cho 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 + " . "; 
    } 
} 

Như bạn thấy tôi tạo ra các bộ lặp lại một lần nữa trong thời gian nhấp chuột. Nhưng điều duy nhất tôi có thể đọc trong label2. là một số ".", trên chấm cho mỗi hộp văn bản. nhưng văn bản từ hộp văn bản trống. Tôi đang làm gì sai?

cảm ơn bạn đã đọc! Mattias

SOLUTION:

  1. thêm EnableViewState = "true" để textbox & repeater.

  2. Không gọi dữ liệu cuộc gọiNhấn() trước khi bạn nhận được các giá trị.

Cảm ơn!

Trả lời

4

Bạn cần đặt EnableViewState thành 'true' cho các nút liên kết hoạt động bình thường trong bộ lặp

+0

không có nút liên kết trong bộ lặp. nút liên kết nằm ngoài bảng điều khiển userDefDiv. – Easyrider

+1

Ồ, tôi hiểu - tôi đã bị lừa bởi tên phương thức nhấp chuột. Dù sao, cùng một câu trả lời sẽ làm việc. Các giá trị của các hộp văn bản trong một bộ lặp sẽ không có sẵn trên một poastback trừ khi EnableViewState = true. – Ray

+0

Nó không hoạt động. – Easyrider

Các vấn đề liên quan