gpt4 book ai didi

c# - ASP.NET TextBox 忽略更新面板

转载 作者:太空宇宙 更新时间:2023-11-03 16:49:06 25 4
gpt4 key购买 nike

我有一个 GridView,其项目模板定义如下:

public class ToolLogTemplate : ITemplate
{
public String DataField { get; set; }

public ToolLogTemplate(String column)
{
DataField = column;
}

public void InstantiateIn(Control container)
{
var textBox = new TextBox();
textBox.ClientIDMode = ClientIDMode.Predictable;
textBox.CssClass = "ToolLog";
textBox.AutoPostBack = true;
textBox.DataBinding += textBox_DataBinding;

container.Controls.Add(textBox);
}

void textBox_DataBinding(object sender, EventArgs e)
{
var textBox = (TextBox)sender;
var context = DataBinder.GetDataItem(textBox.NamingContainer);
textBox.Text = DataBinder.Eval(context, DataField).ToString();
}
}

GridView 位于定义如下的 UpdatePanel 中:

        UpdatePanel updatePanel = new UpdatePanel();
updatePanel.UpdateMode = UpdatePanelUpdateMode.Conditional;

GridView 中 TextBoxes 的 TextChanged 事件触发页面的完全刷新。我的理解是,通过将 TextBox 包装在 UpdatePanel 中,它会触发部分刷新。我是不是误会了?

更新以回应对问题的最新评论:

我在文本框上附加了一些 javascript:

                currentTextBox.Attributes.Add("onFocus", String.Format("document.getElementById('RowTextBox').value = {0}; document.getElementById('ColTextBox').value = {1}; this.style.backgroundColor='#ffeb9c';", i, j));
currentTextBox.Attributes.Add("onBlur", "this.style.backgroundColor='#ffffff'");

它只是设置文本框的颜色并保存它在 GridView 中的位置。更新面板与我在其中的菜单和按钮一起按预期工作,只是导致完整回发的文本框。

最佳答案

看到更新代码后,我修改了我的答案...

需要告知 UpdatePanel 它应该响应哪些控件。您可以通过添加触发器来做到这一点。在您的例子中,您在 GridView 中有 TextBox 控件。这些文本框设置为自动回发。由于它们在 GridView 中,我相信 GridView 将它们视为 RowCommand。使用您的原始代码,我建议您添加以下内容:

UpdatePanel updatePanel = new UpdatePanel();
updatePanel.UpdateMode = UpdatePanelUpdateMode.Conditional;

gridView.OnRowCommand = "GridViewRowCommand";

AsyncPostbackTrigger newTrigger = new AsyncPostbackTrigger();
newTrigger.ControlID = gridView.ControlID;
updatePanel.Triggers.Add(newTrigger);

在你的代码隐藏中,你需要做这样的事情:

protected void GridViewRowCommand(object sender, RowCommandEventArgs e)
{
var myTextBox = e.Row.FindControl("myTextBoxID");
// Do some work
}

关于c# - ASP.NET TextBox 忽略更新面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4754281/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com