c# - 回发后文本框文本消失
问题描述
我正在寻找在 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 在 updatePanle
- 我的文本框无法在编辑器中通过 Id 或使用
TextBox tb = (this.TableArticles.HeaderRow.FindControl("filterDate") as TextBox);
我不知道为什么我的文本框 ID 不存在。
解决方案
您必须将 fitlerDate 的值存储在 ontextchanged 事件中的 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();
}
}
}
推荐阅读
- c++ - OpenCV - 混合/平滑对象周围的接缝
- javafx - 为什么 JavaFx 中的图像大小取决于加载是否在后台?
- javascript - 未捕获的 ReferenceError:未定义接收
- vba - 循环遍历文件夹并将 .csv 文件转换为 .txt 文件的 Visual Basic 代码
- vb.net - 'radius' 不是 VB.NET 中的参数
- regex - 正则表达式 - 从 www.anything.com 中提取单词
- python - How to make predictions using a saved RandomForest model from Orange GUI
- pygame - 玩家不动
- python - 在 python 中的 Python 中创建函数时出错
- spring-mvc - 我如何在多个复选框上调用控制器类中的方法来更新spring mvc中的记录