你好开发人员我真的需要这个问题的解决方案,因为我的最后一年社交网站项目问题是
我有一个Repeater
,在Repeater里面我有一个文本框和一个按钮
我在转发器外面有一个标签,我显示文本框值但是
当我点击按钮,它回发到服务器比标签消失,我想显示文本框值
这就是我正在尝试的:
ASPX页面
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.aspx.cs" Inherits="SocialSite.index" MasterPageFile="~/Master.Master"%>
<asp:Repeater runat="server" ID="repeater1">
<ItemTemplate>
<asp:TextBox runat="server" ID="txtComment" placeholder="write a comment..."></asp:TextBox>
<asp:Button runat="server" ID="btnComment" Text="Post" CssClass="btn btn-primary btn-sm" OnClick="btnComment_Click"/>
</ItemTemplate>
</asp:Repeater>
这是转发器控制之外的标签
<asp:Label runat="server" ID="lblMsg" Text="Not working" ForeColor="Red"> </asp:Label>
代码背后:
这是我加载转发器
的页面加载事件private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
DataTable dt = Helper.ExecutePlainQuery("select * from post inner join userregistration on post.uid=userregistration.uid inner join profile on userregistration.uid=profile.uid order by postid DESC");
repeater1.DataSource = dt;
repeater1.DataBind();
}
}
按钮点击:
protected void btnComment_Click(object sender, EventArgs e)
{
foreach (RepeaterItem item in repeater1.Items)
{
if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
{
TextBox txtName = (TextBox)item.FindControl("txtComment");
if (txtName != null)
{
lblMsg.Text = txtName.Text;
}
}
}
}
这里我调试了按钮代码,它运行良好我的意思是我在分配给标签/ lblMsg的文本框中输入的值,但在前端标签只是消失 < / p>
我搜索这个问题但没有得到解决方案....有些人说使用Page Init .... Page OnInit .... ViewStateMode .... EnableViewState ....但不适合我< / p>
请帮助解决我的最后一年项目问题
答案 0 :(得分:0)
点击按钮后再次绑定中继器。您可以创建一个单独的方法来绑定转发器,并从Page_Load
和btnComment_Click
调用它:
protected void btnComment_Click(object sender, EventArgs e)
{
foreach (RepeaterItem item in repeater1.Items)
{
if (item.ItemType == ListItemType.Item || item.ItemType == ListItemType.AlternatingItem)
{
TextBox txtName = (TextBox)item.FindControl("txtComment");
if (txtName != null)
{
lblMsg.Text = txtName.Text;
}
}
}
DataTable dt = Helper.ExecutePlainQuery("select * from post inner join userregistration on post.uid=userregistration.uid inner join profile on userregistration.uid=profile.uid order by postid DESC");
repeater1.DataSource = dt;
repeater1.DataBind();
}
答案 1 :(得分:0)
您可以尝试这样做:
protected void btnComment_Click(object sender, EventArgs e)
{
Button btnComment = sender as Button;
RepeaterItem item = btnComment.NamingContainer as RepeaterItem;
TextBox txtComment = item.FindControl("txtComment") as TextBox;
lblMsg.Text = txtComment.Text;
}
在原始代码中,Label文本循环设置为转发器的每个TextBox的内容,直到设置为最终的TextBox。因此,无论单击哪个按钮,Label始终显示最后一个转发器项的文本。如果最后一个TextBox为空,则标签“消失”。