2011-07-25 9 views
2

私は.NETで新しく、ダイナミックテーブルの作成に関する質問がありました。VB.Netでダイナミックテーブルを作成する

ユーザーがボタンをクリックしたときにテーブルに新しい行(名、姓、住所など)を追加するページを作成しています。私はあなたが動的テーブルへのポストバックを行うたびに、行を再作成する必要があることを読んでいます。それが私がやっていることです。

私はこれをテストしていますが、すでに約40行が追加されています。新しい行を追加するときにクリックすると、完全に遅くなり、100行を追加するのにかかる時間を想像するだけです。私はそれが行を再作成するのに時間がかかるからだと仮定しています。

私の質問は、より良いアプローチやタスクを達成するための別の方法はありますか?

"**は*現在やって何イムここで編集し

これは私のテーブル、ボタンコントロールです。ボタンがクリックされた

コード、動的テーブルを作成:

Dim tblrow As TableRow 
    Dim tblcell As TableCell 
    Dim inputText As TextBox 

    tblrow = New TableHeaderRow 

    tblcell = New TableHeaderCell 
    tblcell.Text = tableCount 'variable used to count rows in the table 
    tblcell.HorizontalAlign = HorizontalAlign.Left 
    tblrow.Cells.Add(tblcell) 

    tblcell = New TableCell 
    inputText = New TextBox 
    inputText.ID = "txt_" & tableCount 
    tblcell.Controls.Add(inputText) 
    tblrow.Cells.Add(tblcell) 

    table1.rows.add(tblrow) 

これまでに学び、テストしたことから、私がポストバックを行うたびに、入力した内容をすべて保持するためにこのテーブルを再構築する必要がありますテーブル。

次の質問は、ポストバックを行う必要がないように、jqueryを使用して別の行を追加しない理由です。私はこの方法を試してみましたが、テーブルに入力された情報をポストバックが必要なデータベースに入れる必要がある限り、うまくいきました。だから私は元の問題に戻りました。

このイムすべての耳にアプローチするより良い方法がある場合は、注意してください。私が前に言ったように、私はこの言語に慣れず、ただ学びたいと思っています。

+1

ダイナミックテーブルでは、文字通りテーブルのHTMLを書き出しているということですか?グリッドビューなどのコントロールを使用していますか? – Chains

+0

何かを達成するにはより良い方法があります。ポストバックを行うのではなく、AJAXを調べてクライアント上にテーブルを作成してみてください。 jQueryはあなたの友人であることを忘れないでください。その日の終わりに、あなたのコードはおそらく簡単になり、理解しやすくなり、いくつか新しいトリックを学ぶことになります。グリッドビューは、一般的には、簡単で素早く汚れたハッキン​​グ用です。 –

+0

JQueryでは、ポストバックを行うとどうなりますか?クライアント上に構築されたものはすべて再構築する必要がありますか? – Will

答えて

2

あなたの提案はJqGridを使用することです。これは無料のオープンソースjqueryプラグインですが、市販されています。これは、データのロードに高速であり、あなたがJavaScriptとjqueryのを知っている場合は、使用するために、これは簡単になりますダイナミック機能

がたくさんある、Asp.Net、MVCとPHPコンポーネント

1

は、使用しているとして、それが来ますウィンドウズフォーム?もしそうなら、ListViewコントロールを使用してビューを変更してください(私はそれを何と呼んでいるかと思います...)。次に、thisのような多くのチュートリアルの1つを使用して、リストに値を設定します。

Windowsフォーラムを使用していない場合は、VB.netの部分を見て、引き継ぎました。

0

asp.netはサーバー側のWebテクノロジであり、ステートレスなテクノロジ(基本的には)で作業することを意味します。そのため、すべてのポストバックですべてを再構築する必要があります。

あり、これに対処するにはいくつかの方法があります。

  • のasp.netのViewStateを使用しては、とページをチェック。PageLoad上のIsPostBackプロパティ
  • jQueryとピュアなどのクライアント側のテンプレートを使用して
  • し、Webサービスを介してデータをフェッチ

私にあなたが上記示したように、手動でテーブルを作成しないが、代わりにテンプレートのコントロールを使用して宣言的振る舞いを指定することになり、あなたに代わっ。

たとえば、DataGridを作成してViewStateを使用している場合、asp.netは正しく使用されているので、DataGridを明示的に再作成する必要はありません。

関連する問題