Это пример, который при выборе строки в дочернем узле Gridview выбранного узла отображается в том же виде сетки:
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
LocationIDHiddenField.Value = Request.QueryString["LocationID"];
}
if (LocationIDHiddenField.Value != null && LocationIDHiddenField.Value != string.Empty)
LoadLocationParents();
}
private void LoadLocationParents()
{
long locationID = Convert.ToInt64(LocationIDHiddenField.Value);
bool IsCurrent = true;
HyperLink parent;
Label seperator;
do
{
Basic.Location.LocationProperties location = Basic.Location.LocationLoader.GetLocationProperties(locationID);
parent = new HyperLink();
seperator = new Label();
if (!IsCurrent)
parent.NavigateUrl = string.Format("LOCATIONLOV.aspx?LocationID={0}", location.LocationID);
IsCurrent = false;
parent.Text = location.LocationTitle;
seperator.Text = " > ";
ParentsPanel.Controls.AddAt(0, parent);
ParentsPanel.Controls.AddAt(0, seperator);
locationID = location.ParentID;
}
while (locationID != 0);
parent = new HyperLink();
parent.NavigateUrl = "LOCATIONLOV.aspx";
parent.Text = "upper nodes";
ParentsPanel.Controls.AddAt(0, parent);
}
GridView
<asp:GridView ID="ChildsGridView" runat="server" AutoGenerateColumns="False" DataKeyNames="LocationID"
DataSourceID="ChildsObjectDataSource" Width="570px" AllowPaging="True">
<Columns>
<asp:TemplateField>
<HeaderTemplate>
</HeaderTemplate>
<ItemStyle Width="20px" />
<ItemTemplate>
<a onclick="if ('<%# Eval("ChildCount") %>' == 'False') return false;" href='<%# Eval("LocationID", "LOCATIONLOV.aspx?LocationID={0}") %>' ><asp:Image ID="GridLocationLov" runat="server" ToolTip="Expand" SkinID="LOVChilds" /></a>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Title" SortExpression="LocationTitleType">
<ItemTemplate>
<span class="LOVSelectText" onclick="LOCATIONID = '<%# Eval("LocationID") %>'; LOCATIONTITLE = <%= ConfirmTextBox.ClientID %>.value = '<%# Eval("LocationTitle") %>';ChangeSelectedRow(this);">
<%# Eval("LocationTitleType")%>
</span>
</ItemTemplate>
<HeaderTemplate>
<asp:Label ID="GridHeadLabel" runat="server" OnLoad="GridHeadLabel_Load"></asp:Label>
</HeaderTemplate>
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
NO CHild
</EmptyDataTemplate>
</asp:GridView>
DataSource
<asp:ObjectDataSource ID="ChildsObjectDataSource" runat="server" OldValuesParameterFormatString="original_{0}"
SelectMethod="Retrive" TypeName="BASIC.LOCATIONLOV.LOCATIONLOVLoader">
<SelectParameters>
<asp:ControlParameter ControlID="LocationIDHiddenField" Name="ParentID" PropertyName="Value"
Type="Int64" />
<asp:Parameter DefaultValue="LocationTitle" Name="SortExpression" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:HiddenField ID="LocationIDHiddenField" runat="server" />
JavaScript
function ChangeSelectedRow(sender)
{
if (SelectedRow != null)
SelectedRow.style.backgroundColor = OriginalColor;
SelectedRow = sender.parentElement.parentElement;
OriginalColor = SelectedRow.style.backgroundColor;
SelectedRow.style.backgroundColor = 'red';
}