美好的一天!在listview中,我有一个文本字段。用户输入数据并单击(linkbutton)后回发字段丢失数据或显示默认数据(如果有)。当文本框不在listview中时,没有这样的问题。为页面启用了ViewState。 代码的一部分
<asp:ListView ID="mylist" runat="server" DataSourceID="listsource" OnItemDataBound="mylist_ItemDataBound" OnItemCommand="mylist_ItemCommand">
<ItemTemplate>
<div style=" display:inline-block;">
<div style="float:left;">
<img src="<%=ResolveUrl("files") %>/<%#Eval("img") %>" alt='<%#Eval("img") %>' class="primage" />
<div class="div1" style="width:240px;"> <%#Eval("sample") %></div></div>
<div class="card">
<asp:TextBox ID="countbox" runat="server" CssClass=""></asp:TextBox>
<asp:LinkButton ID="add" runat="server" CssClass="add" CommandName="add">some text</asp:LinkButton>
</div>
</div>
</ItemTemplate>
</asp:ListView>
答案 0 :(得分:1)
使用回发,您的数据似乎是通过数据绑定重新生成的。您可以使用检查页面不是回发的if块下的绑定值来避免数据丢失
if(!Page.IsPostBack)
{
//bind my lovely data
}
else
{
// do nothing
// dont bind new data with postback because I just pressed a button
}
另一种解决方案可能是使用AJAX或使用UpdatePanel进行异步回发
答案 1 :(得分:0)
在服务器端,您应该询问该页面是否已回发
If(!Page.IsPostBack)
{
MyListView.DataBind();
}
如果您不这样做,发布的任何值都将被原始值或默认值覆盖。
答案 2 :(得分:-1)
利用Ajax UpdatePanel进行部分回发。 http://msdn.microsoft.com/en-us/library/vstudio/bb386454(v=vs.100).aspx