代码如下,问该代码实现了什么功能,这段代码中有些小问题,请找出来!最后是怎样优化它!
public void Fill(DataTable dt, string query, int pageid, int totalRowsFound)
{
if (query != this.Text)
return;
try {
Popup._lastSel = -1;
if (pageid == 1) {
_dataSource = dt;
Rebind();
} else {
foreach (DataRow row in dt.Rows) {
_currentView.Table.ImportRow(row);
}
if (_grid.Rows.Count > 0 && _grid.Cols.Count > 0) {
_grid.Select(_grid.Rows.Count - 1, 0);
}
}
if (!Popup.Visible) {
try {
if (_currentView.Count == 1) {
SelectedValue = ((DataRowView)_grid.Rows(1).DataSource).Row(DataValueField);
Popup._selectedText = ((DataRowView)_grid.Rows(1).DataSource).Row(DataTextField);
Text = Popup._selectedText;
Popup._selectedRow = ((DataRowView)_grid.Rows(1).DataSource).Row;
if (SelectedRowChanged != null) {
SelectedRowChanged();
}
} else if (_currentView.Count > 0) {
foreach (Row row in _grid.Rows) {
if (row(DataValueField) == query) {
SelectedValue = Row(DataValueField);
Popup._selectedText = Row(DataTextField);
Text = Popup._selectedText;
Popup._selectedRow = ((DataRowView)row.DataSource).Row;
if (SelectedRowChanged != null) {
SelectedRowChanged();
}
break;
}
Text = "";
Popup._selectedText = "";
SelectedValue = null;
Popup._selectedRow = null;
if (SelectedRowChanged != null) {
SelectedRowChanged();
}
}
} else {
Text = "";
Popup._selectedText = "";
SelectedValue = null;
Popup._selectedRow = null;
if (SelectedRowChanged != null) {
SelectedRowChanged();
}
}
} catch (Exception ex) {
_processException(ex, "Error setting the value when popup is invisible!");
}
}
} catch (Exception ex) {
_processException(ex, "Error filling the combo");
}
//set the caption
int many = _grid.Rows.Count - _grid.Rows.Fixed;
Caption = _fwaTexts.GetRetrievedTextFormat(many, totalRowsFound, this._LastSendGetResult);
Popup.FooterEnabled = true;
}
public void Fill(DataTable dt, string query, int pageid, int totalRowsFound)
{
if (query != this.Text)
return;
try {
Popup._lastSel = -1;
if (pageid == 1) {
_dataSource = dt;
Rebind();
} else {
foreach (DataRow row in dt.Rows) {
_currentView.Table.ImportRow(row);
}
if (_grid.Rows.Count > 0 && _grid.Cols.Count > 0) {
_grid.Select(_grid.Rows.Count - 1, 0);
}
}
if (!Popup.Visible) {
try {
if (_currentView.Count == 1) {
SelectedValue = ((DataRowView)_grid.Rows(1).DataSource).Row(DataValueField);
Popup._selectedText = ((DataRowView)_grid.Rows(1).DataSource).Row(DataTextField);
Text = Popup._selectedText;
Popup._selectedRow = ((DataRowView)_grid.Rows(1).DataSource).Row;
if (SelectedRowChanged != null) {
SelectedRowChanged();
}
} else if (_currentView.Count > 0) {
foreach (Row row in _grid.Rows) {
if (row(DataValueField) == query) {
SelectedValue = Row(DataValueField);
Popup._selectedText = Row(DataTextField);
Text = Popup._selectedText;
Popup._selectedRow = ((DataRowView)row.DataSource).Row;
if (SelectedRowChanged != null) {
SelectedRowChanged();
}
break;
}
Text = "";
Popup._selectedText = "";
SelectedValue = null;
Popup._selectedRow = null;
if (SelectedRowChanged != null) {
SelectedRowChanged();
}
}
} else {
Text = "";
Popup._selectedText = "";
SelectedValue = null;
Popup._selectedRow = null;
if (SelectedRowChanged != null) {
SelectedRowChanged();
}
}
} catch (Exception ex) {
_processException(ex, "Error setting the value when popup is invisible!");
}
}
} catch (Exception ex) {
_processException(ex, "Error filling the combo");
}
//set the caption
int many = _grid.Rows.Count - _grid.Rows.Fixed;
Caption = _fwaTexts.GetRetrievedTextFormat(many, totalRowsFound, this._LastSendGetResult);
Popup.FooterEnabled = true;
}
看这个定义大致认为它完成了将sql查询执行后的数据填充到datatable中但是看代码相当混乱。要结合上下文分析代码。