Hola a todos,
He estado en esto por dos días, pero parece que no puede conseguir que funcione solo una parte jejejejejeje.
Tengo tres Tablas, Tema, Conocimiento y ConocimientoEmpleado de la que el Conocimiento tiene una relación ForeignKey a Tema
y ConocimientoEmpleado tiene una relación ForeignKey a Conocimiento . Lo que quiero lograr es que el mastertableview
se rellena con los datos de la relacion entre Tema y Conocimiento y cada registro tiene detailtables referencia a sí misma con
los datos de Conocimiento. Pero esto si me funciona, pero ahora quiero q me aparezca otro DetailTableView
con la referencia de los datos de ConocimientoEmpleado. Lo me dice q el IdTema no tiene relacion o q no es un datacolumn, lo que tengo es lo siguiente:
ASPX
protected void BuscarTablaTema(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
if (!e.IsFromDetailTable)
{
RadGrid1.DataSource = ObtenerDatosTabla("SELECT * FROM Tema");
RadGrid1.MasterTableView.DataKeyNames = new string[] { "IdConocimiento" };
}
}
protected void BuscarTablaConocimiento(object source, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
{
GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem;
switch (e.DetailTableView.Name)
{
case 1:
{
string IdConocimiento = dataItem.GetDataKeyValue("IdConocimiento ").ToString();
e.DetailTableView.DataSource = GetDataTable("SELECT * FROM Conocimiento WHERE IdConocimiento = '" + IdConocimiento + "'");
break;
}
case 2:
{
string IdTema= dataItem.GetDataKeyValue("IdTema").ToString();
e.DetailTableView.DataSource = GetDataTable("SELECT * FROM ConocimientoEmpleado WHERE IdTema = '" + IdTema +"'");
break;
}
}
}
public DataTable ObtenerDatosTabla(string ConsultarTabla)
{
String ConnString = ConfigurationManager.ConnectionStrings["IgrupoLogosConnectionString"].ConnectionString;
SqlConnection ConexionTabla = new SqlConnection(ConnString);
SqlDataAdapter Adaptador = new SqlDataAdapter();
Adaptador.SelectCommand = new SqlCommand(ConsultarTabla, ConexionTabla);
DataTable DatosTabla = new DataTable();
ConexionTabla.Open();
try
{
Adaptador.Fill(DatosTabla);
}
finally
{
ConexionTabla.Close();
}
return DatosTabla;
}
}
}
ASPX.CS
<MasterTableView Width="100%" AllowMultiColumnSorting="True">
<DetailTables>
<telerik:GridTableView DataKeyNames="IdConocimiento" Name="Conocimiento" Width="100%">
<DetailTables>
<telerik:GridTableView DataKeyNames="IdTema" Name="Tema" Width="100%">
<Columns>
<telerik:GridBoundColumn SortExpression="IdEmpleado" HeaderText="IdEmpleado" HeaderButtonType="TextButton"
DataField="IdEmpleado" DataType="System.Int32" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="IdTema" HeaderText="IdTema" HeaderButtonType="TextButton"
DataField="IdTema" DataType="System.Int32" >
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Nivel0" HeaderText="Nivel0" HeaderButtonType="TextButton"
DataField="Nivel0">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Nivel1" HeaderText="Nivel1" HeaderButtonType="TextButton"
DataField="Nivel1">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Nivel2" HeaderText="Nivel2" HeaderButtonType="TextButton"
DataField="Nivel2">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Nivel3" HeaderText="Nivel3" HeaderButtonType="TextButton"
DataField="Nivel3">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Nivel4" HeaderText="Nivel4" HeaderButtonType="TextButton"
DataField="Nivel4">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Experiencia" HeaderText="Experiencia" HeaderButtonType="TextButton"
DataField="Experiencia">
</telerik:GridBoundColumn>
</Columns>
</telerik:GridTableView>
<DetailTables>
<telerik:GridTableView DataKeyNames="IdConocimiento" Width="100%">
<Columns>
<telerik:GridBoundColumn SortExpression="IdTema" HeaderText="IdTema" HeaderButtonType="TextButton"
DataField="IdTema" DataType="System.Int32" >
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="IdConocimiento" HeaderText="IdConocimiento" HeaderButtonType="TextButton"
DataField="IdConocimiento" DataType="System.Int32" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="IdTema" HeaderText="IdTema" HeaderButtonType="TextButton"
DataField="IdTema" UniqueName="IdTema" DataType="System.Int32" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Descripcion" HeaderText="SubTema" HeaderButtonType="TextButton"
DataField="Descripcion" UniqueName="Descripcion">
</telerik:GridBoundColumn>
</Columns>
</telerik:GridTableView>
</DetailTables>
<Columns>
<telerik:GridBoundColumn SortExpression="" HeaderText="IdConocimiento " HeaderButtonType="TextButton"
DataField="IdConocimiento" DataType="System.Int32" ReadOnly="true" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Valor" HeaderText="Tema" HeaderButtonType="TextButton"
DataField="Valor">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>
He estado en esto por dos días, pero parece que no puede conseguir que funcione solo una parte jejejejejeje.
Tengo tres Tablas, Tema, Conocimiento y ConocimientoEmpleado de la que el Conocimiento tiene una relación ForeignKey a Tema
y ConocimientoEmpleado tiene una relación ForeignKey a Conocimiento . Lo que quiero lograr es que el mastertableview
se rellena con los datos de la relacion entre Tema y Conocimiento y cada registro tiene detailtables referencia a sí misma con
los datos de Conocimiento. Pero esto si me funciona, pero ahora quiero q me aparezca otro DetailTableView
con la referencia de los datos de ConocimientoEmpleado. Lo me dice q el IdTema no tiene relacion o q no es un datacolumn, lo que tengo es lo siguiente:
ASPX
protected void BuscarTablaTema(object source, Telerik.Web.UI.GridNeedDataSourceEventArgs e)
{
if (!e.IsFromDetailTable)
{
RadGrid1.DataSource = ObtenerDatosTabla("SELECT * FROM Tema");
RadGrid1.MasterTableView.DataKeyNames = new string[] { "IdConocimiento" };
}
}
protected void BuscarTablaConocimiento(object source, Telerik.Web.UI.GridDetailTableDataBindEventArgs e)
{
GridDataItem dataItem = (GridDataItem)e.DetailTableView.ParentItem;
switch (e.DetailTableView.Name)
{
case 1:
{
string IdConocimiento = dataItem.GetDataKeyValue("IdConocimiento ").ToString();
e.DetailTableView.DataSource = GetDataTable("SELECT * FROM Conocimiento WHERE IdConocimiento = '" + IdConocimiento + "'");
break;
}
case 2:
{
string IdTema= dataItem.GetDataKeyValue("IdTema").ToString();
e.DetailTableView.DataSource = GetDataTable("SELECT * FROM ConocimientoEmpleado WHERE IdTema = '" + IdTema +"'");
break;
}
}
}
public DataTable ObtenerDatosTabla(string ConsultarTabla)
{
String ConnString = ConfigurationManager.ConnectionStrings["IgrupoLogosConnectionString"].ConnectionString;
SqlConnection ConexionTabla = new SqlConnection(ConnString);
SqlDataAdapter Adaptador = new SqlDataAdapter();
Adaptador.SelectCommand = new SqlCommand(ConsultarTabla, ConexionTabla);
DataTable DatosTabla = new DataTable();
ConexionTabla.Open();
try
{
Adaptador.Fill(DatosTabla);
}
finally
{
ConexionTabla.Close();
}
return DatosTabla;
}
}
}
ASPX.CS
<MasterTableView Width="100%" AllowMultiColumnSorting="True">
<DetailTables>
<telerik:GridTableView DataKeyNames="IdConocimiento" Name="Conocimiento" Width="100%">
<DetailTables>
<telerik:GridTableView DataKeyNames="IdTema" Name="Tema" Width="100%">
<Columns>
<telerik:GridBoundColumn SortExpression="IdEmpleado" HeaderText="IdEmpleado" HeaderButtonType="TextButton"
DataField="IdEmpleado" DataType="System.Int32" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="IdTema" HeaderText="IdTema" HeaderButtonType="TextButton"
DataField="IdTema" DataType="System.Int32" >
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Nivel0" HeaderText="Nivel0" HeaderButtonType="TextButton"
DataField="Nivel0">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Nivel1" HeaderText="Nivel1" HeaderButtonType="TextButton"
DataField="Nivel1">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Nivel2" HeaderText="Nivel2" HeaderButtonType="TextButton"
DataField="Nivel2">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Nivel3" HeaderText="Nivel3" HeaderButtonType="TextButton"
DataField="Nivel3">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Nivel4" HeaderText="Nivel4" HeaderButtonType="TextButton"
DataField="Nivel4">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Experiencia" HeaderText="Experiencia" HeaderButtonType="TextButton"
DataField="Experiencia">
</telerik:GridBoundColumn>
</Columns>
</telerik:GridTableView>
<DetailTables>
<telerik:GridTableView DataKeyNames="IdConocimiento" Width="100%">
<Columns>
<telerik:GridBoundColumn SortExpression="IdTema" HeaderText="IdTema" HeaderButtonType="TextButton"
DataField="IdTema" DataType="System.Int32" >
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="IdConocimiento" HeaderText="IdConocimiento" HeaderButtonType="TextButton"
DataField="IdConocimiento" DataType="System.Int32" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="IdTema" HeaderText="IdTema" HeaderButtonType="TextButton"
DataField="IdTema" UniqueName="IdTema" DataType="System.Int32" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Descripcion" HeaderText="SubTema" HeaderButtonType="TextButton"
DataField="Descripcion" UniqueName="Descripcion">
</telerik:GridBoundColumn>
</Columns>
</telerik:GridTableView>
</DetailTables>
<Columns>
<telerik:GridBoundColumn SortExpression="" HeaderText="IdConocimiento " HeaderButtonType="TextButton"
DataField="IdConocimiento" DataType="System.Int32" ReadOnly="true" Visible="false">
</telerik:GridBoundColumn>
<telerik:GridBoundColumn SortExpression="Valor" HeaderText="Tema" HeaderButtonType="TextButton"
DataField="Valor">
</telerik:GridBoundColumn>
</Columns>
</MasterTableView>