Hello,
I am having problem with maintaing state on the detailsview nested inside the radgrid's NestedViewTemplate.
Here is the aspx version
<telerik:RadGrid VirtualItemCount="1000" ID="RadGridAll"
AllowPaging="True" AllowSorting="True"
AllowMultiRowSelection="True" runat="server"
DataSourceID="SqlDataSource1" GridLines="None" OnItemCommand="RadGridAll_ItemCommand">
<MasterTableView AllowCustomPaging="True" DataSourceID="SqlDataSource1" GridLines="Both">
<Columns>
<telerik:GridTemplateColumn UniqueName="CheckBoxTemplate">
<HeaderTemplate>
<asp:CheckBox ID="headerChkbox" AutoPostBack="true" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="checkbox1" AutoPostBack="true" runat="server" />
</ItemTemplate>
<HeaderStyle Width="30px" />
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="TemplateColumn7" DataField="nameLabels" HeaderText="Labels">
<HeaderStyle Width="60px" CssClass="rgHeader last"></HeaderStyle>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"name") %>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
<NestedViewTemplate>
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px">
<Fields>
</Fields>
</asp:DetailsView>
</NestedViewTemplate>
<ExpandCollapseColumn Visible="True">
</ExpandCollapseColumn>
</MasterTableView>
<FilterMenu EnableEmbeddedSkins="False">
</FilterMenu>
<HeaderContextMenu EnableEmbeddedSkins="False">
</HeaderContextMenu>
</telerik:RadGrid>
and in the code behind I am adding custom template fields to the detailsview whenever the user presses the expand button it:
private void AddField(DetailsView dvItemDetails,string column, string header)
{
object value = "ddddd";
TemplateField field = new TemplateField();
field.ShowHeader = true;
field.HeaderTemplate = new DetailsViewTemplate(DataControlRowType.Header, header, "", "");
field.ItemTemplate = new DetailsViewTemplate(DataControlRowType.DataRow, "", column, value);
dvItemDetails.Fields.Add(field);
}
public void CreateColumns(DetailsView dvItemDetails)
{
AddField(dvItemDetails,"one","One");
AddField(dvItemDetails,"two", "Two");
List<int> source=new List<int>(2);
source.Add(1);
source.Add(2);
dvItemDetails.DataSource = source;
dvItemDetails.DataBind();
}
protected void RadGridAll_ItemCommand(object source, Telerik.Web.UI.GridCommandEventArgs e)
{
if (e.CommandName == "ExpandCollapse")
{
GridDataItem item = RadGridAll.Items[e.Item.ItemIndex];
GridNestedViewItem template = item.ChildItem;
DetailsView dvItemDetails = template.FindControl("DetailsView1") as DetailsView;
CreateColumns(dvItemDetails);
}
}
I am using a custom template class ,DetailsViewTemplate
public class DetailsViewTemplate : ITemplate
{
private DataControlRowType templateType;
private string columnHeader;
private string columnNameBinding;
private string text = "";
public DetailsViewTemplate(DataControlRowType type, string colHeader, string colNameBinding, object value)
{
templateType = type;
columnHeader = colHeader;
columnNameBinding = colNameBinding;
text = value.ToString();
}
public void InstantiateIn(System.Web.UI.Control container)
{
switch (templateType)
{
case DataControlRowType.Header:
Literal lc = new Literal();
lc.Text = columnHeader;
container.Controls.Add(lc);
break;
case DataControlRowType.DataRow:
Label cb = new Label();
cb.ID = "cb1";
cb.Text = text;// GetStudent("select * from ppaSearchColumn").Tables[0].Rows[rowIndex][columnNameBinding].ToString();
container.Controls.Add(cb);
break;
default:
break;
}
}
}
when i expand a row it is presented ok, but when I expand another one, the first one loses the text from the detailsview.
I am new to telerik so please bear with me if this is an easy one.
Anybody has a suggestion?
Thanks,
Lucian
I am having problem with maintaing state on the detailsview nested inside the radgrid's NestedViewTemplate.
Here is the aspx version
<telerik:RadGrid VirtualItemCount="1000" ID="RadGridAll"
AllowPaging="True" AllowSorting="True"
AllowMultiRowSelection="True" runat="server"
DataSourceID="SqlDataSource1" GridLines="None" OnItemCommand="RadGridAll_ItemCommand">
<MasterTableView AllowCustomPaging="True" DataSourceID="SqlDataSource1" GridLines="Both">
<Columns>
<telerik:GridTemplateColumn UniqueName="CheckBoxTemplate">
<HeaderTemplate>
<asp:CheckBox ID="headerChkbox" AutoPostBack="true" runat="server" />
</HeaderTemplate>
<ItemTemplate>
<asp:CheckBox ID="checkbox1" AutoPostBack="true" runat="server" />
</ItemTemplate>
<HeaderStyle Width="30px" />
</telerik:GridTemplateColumn>
<telerik:GridTemplateColumn UniqueName="TemplateColumn7" DataField="nameLabels" HeaderText="Labels">
<HeaderStyle Width="60px" CssClass="rgHeader last"></HeaderStyle>
<ItemTemplate>
<%# DataBinder.Eval(Container.DataItem,"name") %>
</ItemTemplate>
</telerik:GridTemplateColumn>
</Columns>
<NestedViewTemplate>
<asp:DetailsView ID="DetailsView1" runat="server" Height="50px" Width="125px">
<Fields>
</Fields>
</asp:DetailsView>
</NestedViewTemplate>
<ExpandCollapseColumn Visible="True">
</ExpandCollapseColumn>
</MasterTableView>
<FilterMenu EnableEmbeddedSkins="False">
</FilterMenu>
<HeaderContextMenu EnableEmbeddedSkins="False">
</HeaderContextMenu>
</telerik:RadGrid>
and in the code behind I am adding custom template fields to the detailsview whenever the user presses the expand button it:
private void AddField(DetailsView dvItemDetails,string column, string header)
{
object value = "ddddd";
TemplateField field = new TemplateField();
field.ShowHeader = true;
field.HeaderTemplate = new DetailsViewTemplate(DataControlRowType.Header, header, "", "");
field.ItemTemplate = new DetailsViewTemplate(DataControlRowType.DataRow, "", column, value);
dvItemDetails.Fields.Add(field);
}
public void CreateColumns(DetailsView dvItemDetails)
{
AddField(dvItemDetails,"one","One");
AddField(dvItemDetails,"two", "Two");
List<int> source=new List<int>(2);
source.Add(1);
source.Add(2);
dvItemDetails.DataSource = source;
dvItemDetails.DataBind();
}
protected void RadGridAll_ItemCommand(object source, Telerik.Web.UI.GridCommandEventArgs e)
{
if (e.CommandName == "ExpandCollapse")
{
GridDataItem item = RadGridAll.Items[e.Item.ItemIndex];
GridNestedViewItem template = item.ChildItem;
DetailsView dvItemDetails = template.FindControl("DetailsView1") as DetailsView;
CreateColumns(dvItemDetails);
}
}
I am using a custom template class ,DetailsViewTemplate
public class DetailsViewTemplate : ITemplate
{
private DataControlRowType templateType;
private string columnHeader;
private string columnNameBinding;
private string text = "";
public DetailsViewTemplate(DataControlRowType type, string colHeader, string colNameBinding, object value)
{
templateType = type;
columnHeader = colHeader;
columnNameBinding = colNameBinding;
text = value.ToString();
}
public void InstantiateIn(System.Web.UI.Control container)
{
switch (templateType)
{
case DataControlRowType.Header:
Literal lc = new Literal();
lc.Text = columnHeader;
container.Controls.Add(lc);
break;
case DataControlRowType.DataRow:
Label cb = new Label();
cb.ID = "cb1";
cb.Text = text;// GetStudent("select * from ppaSearchColumn").Tables[0].Rows[rowIndex][columnNameBinding].ToString();
container.Controls.Add(cb);
break;
default:
break;
}
}
}
when i expand a row it is presented ok, but when I expand another one, the first one loses the text from the detailsview.
I am new to telerik so please bear with me if this is an easy one.
Anybody has a suggestion?
Thanks,
Lucian