2016-05-23 2 views
0

Я пытаюсь заполнить GridView как это:GridView.DataBind() трудности

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

В то же .cs файл, я использую только gridView.DataBind();, и она работает. Я хочу знать, как метод DataBind() ссылается на источник данных?

+0

Можете ли вы быть более конкретным? После того, как вы установили источник данных, вам больше не нужно его устанавливать, поэтому вы можете просто вызвать «DataBind», если хотите привязать сетку. В сетке содержится ссылка на исходный источник, –

ответ

1

Место, где вы вызываете только DataBind метод фактически не делает никакой разницы, так как вид сетки уже был DataSource и при вызове этой функции она снова связать его с имеющимся источником данных

При вызове этой линии даже один раз на странице

gridView.DataSource = dTable; 

назначает источник данных в виде сетки и любой последующий вызов метода DataBind будет связать сетку с теми же уже загруженными данными.

+0

Что делать, если 'gridView.DataSource = null'? – Divyesh

+0

Если вы просто напишете эту строку 'gridView.DataSource = null', это не повлияет, но если вы вызовете« DataBind »после этой строки, она сбросит сетку и вытолкнет ее, поскольку данных нет. –

+0

хорошо, спасибо за ваш добрый ответ. – Divyesh

0

DataBind предоставляет только ваш источник данных, который уже загружен в объект. Вы можете выполнять другие привязки в aspx, например <span><%#MyClass.RenderSomething()%></span>, но ничего не происходит, если вы не поручите ему привязать (т.е. page.DataBind(); в ваших cs).

Вы можете определить свой DataSource в одном разделе своего кода и связать его в другом, потому что ваше определение источника для элемента управления (вашего GridView) и когда наконец-то вызывается DataBind, - это когда все обрабатывается в выходные и события таких как RowCreated.

1

Метод DataBind() используется для привязки источника к серверным элементам управления.

Метод DataBind() заставляет gridview связываться с определенным источником данных. Поскольку вы уже ссылались на свой DataSource, и когда вы используете только DataBind(), по умолчанию он будет использовать предыдущий DataSource, так как он присутствует в памяти.

Однако большинство элементов управления выполняет привязки автоматически. Таким образом, вам не нужно явно использовать этот метод.

Надеюсь, это то, что вы хотели знать.

0

частная пустота bindGrid (DataTable dTable) { попробовать {

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