私はこれを数時間稼働させようとしてきましたが、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();
}
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で読むことができるのは唯一のことです。各テキストボックスの点にある "。"の数です。 テキストボックスのテキストは空です。 何が間違っていますか?
読んでいただきありがとうございます! マティアス
SOLUTION:
- は、テキストボックス&リピータに= "true" をEnableVIewStateを追加します。
値を取得する前に、dataBind()を呼び出さないでください。
ありがとう!
で正しく動作するために「真」にEnableViewStateを設定する必要があります。リンクボタンはuserDefDivパネルの外側にあります。 – Easyrider
ああ、わかった - 私はクリックメソッド名にだまされていた。とにかく、同じ答えが働くはずです。 EnableViewState = true以外の場合、リピータ内のテキストボックスの値はpoastbackで使用できません。 – Ray
それは動作しません。 – Easyrider