Hello,
i'm using a datagrid in Web user Control called in an aspx page.
I create the columns and rows dynamically using this code.
My problem is : is there a way to create the datagrid columns on a
postback,
without binding to a specific datasource ?
private void InsertColumns(TablePreferences prefTable,object[]
objInfo,FieldInfo[] m_FieldInfo)
{
Page.Trace.Warn("Table InsertColumns");
Column[] theColumns = prefTable.Columns;
int prefColumnPosition;
for(int i=0;i<m_FieldInfo.Length;i++)
{
if (m_FieldInfo[i]!=null)
{
string sFieldName = m_FieldInfo[i].Name.ToUpper();
prefColumnPosition = prefTable.GetColumnPosition(sFieldName);
if (prefColumnPosition != -1)
{
Type thisType = m_FieldInfo[i].FieldType;
m_datatable.Columns.Add(sFieldName,thisType);
// Text column
if (theColumns[prefColumnPosition].Type.Equals(Column.ColumnType.Text))
{
BoundColumn adddedBoundCol = new BoundColumn();
adddedBoundCol.HeaderText = m_FieldInfo[i].Name;
adddedBoundCol.DataField = m_FieldInfo[i].Name;
adddedBoundCol.SortExpression = m_FieldInfo[i].Name;
adddedBoundCol.Visible = theColumns[prefColumnPosition].Visible;
dtgComponent.Columns.Add(adddedBoundCol);
}
// Hyperlink column
if (theColumns[prefColumnPosition].Type.Equals
(Column.ColumnType.Hyperlink))
{
HyperLinkColumn adddedHyperLinkCol = new HyperLinkColumn();
adddedHyperLinkCol.HeaderText = m_FieldInfo[i].Name;
adddedHyperLinkCol.DataTextField = m_FieldInfo[i].Name;
adddedHyperLinkCol.SortExpression = m_FieldInfo[i].Name;
adddedHyperLinkCol.Visible = theColumns[prefColumnPosition].Visible;
adddedHyperLinkCol.NavigateUrl = "javascript:void(0);";
dtgComponent.Columns.Add(adddedHyperLinkCol);
}
} // if (prefColumnPosition != -1)
} // if (m_FieldInfo[i]!=null)
} // for(int i=0;i<m_FieldInfo.Length;i++)
}
private void InsertRows(TablePreferences prefTable,object[]
objInfo,FieldInfo[] m_FieldInfo)
{
Page.Trace.Warn("Table InsertRows");
for (int i=0;i<objInfo.Length;i++)
{
DataRow drList = m_datatable.NewRow();
for(int j=0;j<m_FieldInfo.Length;j++)
{
if (m_FieldInfo[j]!=null)
{
string sFieldName = m_FieldInfo[j].Name.ToUpper();
if (m_datatable.Columns.Contains(sFieldName))
{
drList[sFieldName] = myIntrospec.GetValue(m_FieldInfo[j],objInfo[i]);
}
}
}
m_datatable.Rows.Add(drList);
}
}