回发后TextBox丢失数据(listview)

时间:2014-06-12 12:48:08

标签: asp.net repeater

美好的一天!在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>

3 个答案:

答案 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)