2016-05-23 10 views
0

私はこのようにGridViewを埋めるためにしようとしています:同じは.csファイルでGridView.DataBind()難易

private void BindGridView(DataTable dTable) 
{ 
    gridView.DataSource = dTable; 
    gridView.DataBind(); 
} 

、私はgridView.DataBind();を使用していますし、それが動作します。 DataBind()メソッドがデータソースをどのように参照しているか知りたいですか?

+0

を試してみてください?データソースを設定したら、再度設定する必要はないので、グリッドを_re-bind_したい場合は 'DataBind'を呼び出すことができます。グリッドは、元のソースへの参照を保持します。 –

答えて

1

あなたが実際にのみDataBindメソッドを呼び出して、グリッドビューがすでにDataSourceを持っていたので、任意の違いをしていない、あなたは、この関数を呼び出すときにも、このラインを呼び出すと、それが再び利用可能なデータソース

とそれをバインドされている場所一度ページで

gridView.DataSource = dTable; 

これは、グリッドビューにデータソースを割り当て、DataBind方法への後続の呼び出しは同じ、すでにロードされたデータにグリッドをバインドします。

+0

'gridView.DataSource = null'の場合はどうなりますか? – Divyesh

+0

この行 'gridView.DataSource = null'を書くだけで効果はありませんが、この行の後に' DataBind'を呼び出すと、グリッドがリセットされ、データがないので空になります。 –

+0

よろしくお願い致します。 – Divyesh

0

DataBindは、既にオブジェクトにロードされているデータソースのみをレンダリングしています。例えば<span><%#MyClass.RenderSomething()%></span>のように他のバインディングをaspxで行うことはできますが、バインドするよう指示しない限り何も起こりません(つまり、あなたのcsにpage.DataBind();)。

DataSourceをコードの1つのセクションに定義し、それを別のセクションにバインドすることができます。ソースをコントロール(GridView)に定義し、DataBindが最後に呼び出されると、すべてが出力およびイベントそのようなRowCreatedが発砲します。

1

DataBind()メソッドは、Sourceをサーバーコントロールにバインドするために使用されます。

DataBind()メソッドは、Gridviewを特定のDataSourceに強制的にバインドさせます。 DataSourceを既に参照していて、DataBind()のみを使用している場合は、メモリ内にあるため、既定では以前のDataSourceが使用されます。

ただし、ほとんどのコントロールは自動的にバインドを実行します。したがって、このメソッドを明示的に使用する必要はありません。

私はこれがあなたが知りたいと思ったものです。

0

ます。private void bindGrid(DataTableのdTable) { では、より特異的であることができる {

  gvSmokingStatus.DataSource = dTable; 
      gvSmokingStatus.DataBind();    
    } 
    catch (Exception ex) 
    { 
     throw ex;`enter code here` 
    } 
}