【问题标题】:How can this codebehind be written better?如何更好地编写此代码隐藏?
【发布时间】:2012-02-19 02:47:48
【问题描述】:

我有一个表单,它有一个文本框,可以在按 Enter 时将一些数据发送到数据库。数据显示在转发器控件中的文本框下方。通过将数据绑定到该文本框的 TextChanged 事件中的转发器,输入数据会立即显示在表单上。

在 CodeBehind 中,我调用 BindRepeater 方法两次,一次是在每次新页面加载时,一次是在文本框的 TextChanged 事件中。

如何将其重写为只调用一次 BindRepeater 仍能达到相同的效果?

protected void Page_Load(object sender, EventArgs e)
{    
    if (!this.IsPostBack)
    {
        BindRepeater();
    }
}

protected void BindRepeater()
{
    // data retrieval
    // repeater binding 
}

protected void CreateData(string newdata)
{
    // data insert
}

protected void TextBox1_TextChanged(object sender, EventArgs e)
{
    if (TextBox1.Text != string.Empty)
    {
        string _newData = TextBox1.Text.Trim();
        CreateData(_newData);
        BindRepeater();
    }
}

【问题讨论】:

  • 您不想从两个地方调用它的任何特殊原因?代码在我看来没问题!
  • @DavidGouge:这样做是否正常,即使可能有更多的地方可能会调用 BindRepeater?

标签: asp.net code-behind


【解决方案1】:

使用将在文本更改事件后触发的事件进行绑定。您现在可以将其从页面加载事件中删除。

【讨论】:

  • 我在 Page_Load 事件中调用它,以便在第一个页面加载时显示现有数据。
  • 它仍然会在其他事件中被调用
  • 抱歉,我没有弄清楚如何去做。能否请您添加一些伪代码?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-14
  • 2017-08-19
  • 1970-01-01
  • 1970-01-01
  • 2020-01-29
  • 2010-12-08
相关资源
最近更新 更多