我有一个 gridview,其内容由 accessdatasource 提供,显示的数据取决于具有回发事件的下拉列表
- 页面加载
- 用户从下拉列表中选择一个项目
- 页面重新加载 gridview 中的新数据
到目前为止一切顺利
然后我在 GridView 中添加了一个文本框(不,我不能使用标准的“编辑”链接) 文本框在项目模板中
此文本框包含可编辑的数据,供用户更新并通过单击更新按钮发送回服务器。
问题是,如果我更改下拉列表中的选择,gridview 会更新,但文本框会保留旧值,即使它们与 <%# Bind("vr_total") %> 绑定(bind)也是如此
我只能假设这是由回发数据引起的,并且数据在绑定(bind)发生后被覆盖。 (否则绑定(bind)会覆盖旧的不需要的数据)
谁能解释一下我该如何改变这种行为。
View 状态设置为 false
我是 .net 和 c# 的新手
直流
进一步发展..
如果我将
问题似乎是 gridview 在绑定(bind)数据时填充其子控件,但即使其 View 状态被禁用,文本框也会用发布的内容覆盖它(通过下拉列表中的回发事件)。
最佳答案
克里斯, 控件具有所谓的 ControlState,您无法禁用它。您遇到的问题是您在页面加载中加载和绑定(bind),然后触发一个 Action 。
我们解决这个问题的方法是在 Page_Load 中加载数据并在 OnPreRender 中绑定(bind)数据。
例如:
private void Page_Load(object sender, System.EventArgs e)
{
grid.DataSource = whatever;
}
// your dropdown event occurs between these two events
protected override void OnPreRender(EventArgs e)
{
grid.DataBind();
}
要更好地了解 ASP.NET ViewState,请查看 http://msdn.microsoft.com/en-us/library/ms972976.aspx
关于c# - .net c# postback 覆盖绑定(bind)的文本框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1598325/