我正在创建一个GridView包装类,它从数据库中检索某些数据位然后显示它。当选择一行时,我会引发一个其他类将要侦听的事件。我还创建了一个向GridView添加新列的方法,其中包含一些简单的图标。
以下是我的一些代码:
protected override void OnPreRender(EventArgs e)
{
CreateGridView(); // This creates the gridview and sets it properties
PopulateGridView(); // This queries the DB and binds the data
AddIconColumn(gvData.HeaderRow); //Add Icon Column to header
foreach (GridViewRow row in gvData.Rows)
{
AddIconColumn(row); // Add Icon Column to each row
}
}
protected virtual void AddIconColumn(GridViewRow row)
{
if (!ShowIcons) return;
if (row.RowType == DataControlRowType.Header)
{
TableHeaderCell HeaderCell = new TableHeaderCell();
HeaderCell.Text = string.Empty;
row.Cells.AddAt(index, HeaderCell);
}
if (row.RowType == DataControlRowType.DataRow)
{
var NewCell = new TableCell();
var SwitchCell = row.Cells[6] as TableCell;
NewCell.CssClass = columnValueDictionary[SwitchCell.Text];
row.Cells.AddAt(index, NewCell);
}
}
public void gvData_SelectedIndexChanged(object sender, EventArgs e)
{
GridViewRow row = gvData.SelectedRow; // Get the selected row
int selectedID;
var id = row.Cells[2].Text; // When the icon column is enabled, all the cells are empty at this point !
if (int.TryParse(id, out selectedObjID))
{
if (SelectedIDChanged != null)
{
SelectedIDChanged(this, new SelectedIDChangedEventArgs(selectedObjID));
}
}
}
当我使用图标添加新列时,GridView的SelectedIndexChanged方法无法从行中检索任何数据。在SelectedIndexChanged事件期间,所有单元格文本都为空。如果我不添加图标行(通过将ShowIcons设置为false),则单元格在SelectedIndexChanged更改事件期间具有正确的文本。
可能导致此行为的原因是什么?