C# 单击hyperlinkfield时获取gridview的索引
我正在开发一个web应用程序(ASP.NET 2.0,使用C#)。在其中,我有一个gridview,页面上有一个超链接字段(My_page.aspx)。单击Hyperlinkfield时,它会在同一页面上显示详细信息C# 单击hyperlinkfield时获取gridview的索引,c#,asp.net,gridview,coding-style,detailsview,C#,Asp.net,Gridview,Coding Style,Detailsview,我正在开发一个web应用程序(ASP.NET 2.0,使用C#)。在其中,我有一个gridview,页面上有一个超链接字段(My_page.aspx)。单击Hyperlinkfield时,它会在同一页面上显示详细信息 <asp:HyperLinkField DataNavigateUrlFields="ID" DataNavigateUrlFormatString="My_Page.aspx?id={0}"
<asp:HyperLinkField DataNavigateUrlFields="ID"
DataNavigateUrlFormatString="My_Page.aspx?id={0}"
DataTextField="NAME"
HeaderText="Item1"
SortExpression="NAME" />
我想知道如何找到单击超链接的行的索引,因为我想更改其样式,以便用户知道单击了哪一行
或
当用户在gridview中单击超链接时,我将如何更改它的样式
谢谢。在您的示例中,所单击的超链接的“索引”或“id”将在请求中。QueryString[“id”]
您可以将querystring中的ID与RowDataBound事件中绑定到的行的ID进行比较
或者,您可以在您的aspx中使用,根据ID字段和查询字符串设置样式
编辑:代码示例,尝试将其添加到代码隐藏中
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
if(Request.QueryString["id"] != null &&
Request.QueryString["id"] == DataBinder.Eval(e.Row.DataItem, "id").ToString())
{
e.Row.Style.Add("font-weight", "bold");
}
}
}
这是一个示例,当您在Gridview上选择一行时,所选节点的子节点将显示在同一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);
}
网格视图
<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>
<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" />
function ChangeSelectedRow(sender)
{
if (SelectedRow != null)
SelectedRow.style.backgroundColor = OriginalColor;
SelectedRow = sender.parentElement.parentElement;
OriginalColor = SelectedRow.style.backgroundColor;
SelectedRow.style.backgroundColor = 'red';
}