2012-02-18 3 views
0

私は入力時にいくつかのデータをデータベースに送る単一のテキストボックスを持つフォームを持っています。データはリピータコントロールのテキストボックスの下に表示されます。入力データは、そのテキストボックスのTextChangedイベントでリピータにデータをバインドすることによって、フォーム上にすぐに表示されます。このコードビヘイビアはどのようにしてより良い書き方ができますか?

CodeBehindでは、BindRepeaterメソッドを2回呼び出します。新しいページを読み込むたびに1回、テキストボックスのTextChangedイベントで1回呼び出します。

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(); 
    } 
} 
+0

なぜ2か所から電話したくない特別な理由はありますか?コードは私には大丈夫です! – DavidGouge

+2

おそらくhttp://codereview.stackexchange.com/に所属しています。 –

+0

@DavidGouge:BindRepeaterが呼び出される可能性のある場所がさらにあるかもしれませんが、これは正常ですか? – Animesh

答えて

1

バインディングを行うためにテキスト変更イベントの後に発生するイベントを使用します。これで、ページロードイベントからイベントを削除できるようになりました。

+0

Page_Loadイベントで呼び出すので、最初のページの読み込み時に既存のデータが表示されます。 – Animesh

+0

それはまだ他のイベントで呼び出される –

+0

申し訳ありませんが、私はこれを行う方法について明確になっていませんでした。疑似コードを追加してください。 – Animesh

関連する問題