文本框文本在回发后消失
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了文本框文本在回发后消失相关的知识,希望对你有一定的参考价值。
我想在asp.net中使用像这样的标题列创建一个GridView
<asp:TemplateField SortExpression="Date">
<HeaderTemplate>
<asp:LinkButton ID="headerDate" runat="server" Text="Date ↕️" CommandArgument="Date" CommandName="Sort" ></asp:LinkButton>
<br />
<asp:TextBox AutoPostBack="true" ontextchanged="bindFilteredList" ReadOnly="false" CssClass="search_textbox" runat="server" ID="fitlerDate" >
</asp:TextBox>
</HeaderTemplate>
<ItemTemplate>
<%#Eval("Date") %>
</ItemTemplate>
</asp:TemplateField>
我的问题是,当一个文本框被填充时,我的onTextChanged函数被触发,我做了我的技巧(textBox中的值仍然在这里),页面刷新自己并通过page_Load:
if (!IsPostBack && !IsAsync)
this.mpePopUp.Hide();
String defaultSortExpression;
enuSortOrder defaultSortOrder;
int defaultIndex;
// On trie par date déscendant par défaut pour avoir les articles les plus récents
defaultSortExpression = sortExpression[0];
defaultSortOrder = enuSortOrder.soDescending;
defaultIndex = 0;
// bind data au gridview
this.ViewState.Add(VS_CURRENT_SORT_EXPRESSION, defaultSortExpression);
this.ViewState.Add(VS_CURRENT_SORT_ORDER, defaultSortOrder);
this.ViewState.Add(VS_CURRENT_INDEX, defaultIndex);
bindData(defaultSortExpression, defaultSortOrder, defaultIndex);
虽然我不适合if(使用调试器检查),但在函数结束时,当调试器在结束括号上时,我的值将从TextBox中消失。
我该怎么做才能保持TextBox中的值?
你需要知道所有这些:
- 我的GridView在updatePanel中
- 我无法通过ID或编辑器在编辑器中访问我的文本框
TextBox tb = (this.TableArticles.HeaderRow.FindControl("filterDate") as TextBox);
我不知道我的文本框ID不存在的原因。
答案
您必须在ontextchanged事件中将fitlerDate的值存储在ViewState中。喜欢
ViewState["fitlerDate"] = fitlerDate.Text;
并在过滤后重新绑定网格时再次绑定该值。
您必须注册GridView事件OnRowDataBound
,在那种情况下,您必须编写逻辑来查找标题控件
protected void gvGrid_RowDataBound(object sender, GridViewRowEventArgs e)
if (e.Row.RowType == DataControlRowType.Header)
TextBox fitlerDate = (TextBox)e.Row.FindControl("fitlerDate");
if (fitlerDate != null)
fitlerDate.Text = ViewState["fitlerDate"].ToString();
以上是关于文本框文本在回发后消失的主要内容,如果未能解决你的问题,请参考以下文章