2011-12-09 32 views
5

私はこれを数時間稼働させようとしてきましたが、Googleからは何も問題を解決できませんでした。リピーターasp.net内のテキストボックスから値を取得するC#

私は非常に単純なRepeaterコントロールを持っている:

<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 ""がありません。

So. このページのすべては、linkbuttons_clickの後に発生します。ページロード中は何も起こりません。そして、私は別のリンクボタンをクリックした後、私はリピータ内にある別のテキストボックスからデータを取得したい。

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. は、テキストボックス&リピータに= "true" をEnableVIewStateを追加します。

  2. 値を取得する前に、dataBind()を呼び出さないでください。

ありがとう!

答えて

4

あなたはリピーターにはLinkBut​​tonコントロールがないlinkbuttonsはリピータ

+0

で正しく動作するために「真」にEnableViewStateを設定する必要があります。リンクボタンはuserDefDivパネルの外側にあります。 – Easyrider

+1

ああ、わかった - 私はクリックメソッド名にだまされていた。とにかく、同じ答えが働くはずです。 EnableViewState = true以外の場合、リピータ内のテキストボックスの値はpoastbackで使用できません。 – Ray

+0

それは動作しません。 – Easyrider

関連する問題