Eas*_*der 5 c# asp.net 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>
Run Code Online (Sandbox Code Playgroud)
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();
}
Run Code Online (Sandbox Code Playgroud)
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 + " . ";
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,我在点击期间再次创建转发器.但我唯一可以在label2中阅读.是一个"."的数字,在每个文本框的点上.但是文本框中的文字是空的..我做错了什么?
谢谢阅读!马蒂亚斯
解:
将EnableVIewState ="true"添加到文本框和转发器.
在获取值之前不要调用dataBind().
谢谢!
您需要将 EnableViewState 设置为“true”,链接按钮才能在转发器中正常工作