nested datagrid - fejl
HeyNår jeg forsøger at neste et DataGrid med et andet, får jeg flg. fejl:
System.InvalidCastException: Specified cast is not valid
og min stack trace (som jeg ikke fatter):
[InvalidCastException: Specified cast is not valid.]
emotor.builder.filearchive.filearchieve_viewFiles.showFiles(Object sender, DataGridItemEventArgs e) +88
System.Web.UI.WebControls.DataGrid.OnItemDataBound(DataGridItemEventArgs e) +110
System.Web.UI.WebControls.DataGrid.CreateItem(Int32 itemIndex, Int32 dataSourceIndex, ListItemType itemType, Boolean dataBind, Object dataItem, DataGridColumn[] columns, TableRowCollection rows, PagedDataSource pagedDataSource) +181
System.Web.UI.WebControls.DataGrid.CreateControlHierarchy(Boolean useDataSource) +1408
System.Web.UI.WebControls.BaseDataList.OnDataBinding(EventArgs e) +49
System.Web.UI.WebControls.BaseDataList.DataBind() +23
emotor.builder.filearchive.filearchieve_viewFiles.showFolders() +250
emotor.builder.filearchive.filearchieve_viewFiles.Page_Load(Object sender, EventArgs e) +58
System.Web.UI.Control.OnLoad(EventArgs e) +67
System.Web.UI.Control.LoadRecursive() +29
System.Web.UI.Page.ProcessRequestMain() +724
Mine funktion ser ud som følger:
// Show fake folders (Master DataGrid)
protected void showFolders() {
// Set SQL Query
SqlString = "SELECT folders.id AS sqlMasterID, folders.folderName FROM folders ORDER BY folders.folderName";
SqlStringDetails = "SELECT filearchive.id AS sqlDetailID, filearchive.fileName, filearchive.folderID FROM filearchive ORDER BY filearchive.fileName";
// Create and fill Master/Details DataAdapter objects
CoreLab.MySql.MySqlConnection Conn = OpenMySqlConnection();
Conn.Open();
// Master
CoreLab.MySql.MySqlDataAdapter objAdapterMaster = new CoreLab.MySql.MySqlDataAdapter(SqlString, Conn);
// Detail
CoreLab.MySql.MySqlDataAdapter objAdapterDetail = new CoreLab.MySql.MySqlDataAdapter(SqlStringDetails, Conn);
Conn.Close();
objAdapterMaster.Fill(ds,"Master");
objAdapterDetail.Fill(ds,"Detail");
dg.DataSource = ds.Tables["Master"];
dg.DataBind();
}
// Show files (Detail DataGrid)
protected void showFiles(object sender, DataGridItemEventArgs e) {
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) {
// Build new DataGrid
DataGrid dgDetails = new DataGrid();
// Get Master ID
//int masterID = e.Item.DataItem("sqlMasterID");
int masterID = Int32.Parse(((System.Data.Common.DbDataRecord)e.Item.DataItem)["sqlMasterID"].ToString());
// Create a DataView
DataView dv = new DataView();
dv = ds.Tables["Detail"].DefaultView;
dv.RowFilter = "sqlMasterID=" + masterID;
// Bind the data to the new DataGrid
dgDetails.DataSource = dv;
dgDetails.DataBind();
// Add the DataGrid to the second column
e.Item.Cells[1].Controls.Add(dgDetails);
}
}
og min webform:
<asp:DataGrid id=dg runat="server" AutoGenerateColumns="False" ShowHeader="False" OnItemDataBound="showFiles">
<Columns>
<asp:TemplateColumn HeaderText="mapper">
<ItemTemplate><%#DataBinder.Eval(Container, "DataItem.folderName")%></ItemTemplate>
</asp:TemplateColumn>
<asp:TemplateColumn HeaderText="filer">
<ItemTemplate>
</ItemTemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
Nogle der kan hjælpe?
