2009-04-15 68 views
2

我有一个正在处理的Web应用程序(使用C#的ASP.NET 2.0)。其中,我有一个页面上有超链接字段的GridView(My_Page.aspx)。当单击超链接字段时,它会在同一页面上显示详细信息。单击超链接字段时获取gridview的索引

<asp:HyperLinkField DataNavigateUrlFields="ID" 
        DataNavigateUrlFormatString="My_Page.aspx?id={0}" 
        DataTextField="NAME" 
        HeaderText="Item1" 
        SortExpression="NAME" /> 

我想知道如何在其中找到被点击超链接的行的索引,因为我想改变它的风格,让用户知道被点击哪一行。

OR

我将如何改变它的风格,当用户点击超链接在GridView。

谢谢。

回答

1

在您的例子中,“指数”或者不如说是被点击将在的Request.QueryString [“身份证”]

你可以从查询字符串用的ID比较ID的超级链接的“身份证”您在RowDataBound事件中绑定的行。

或者,您可以在您的aspx中使用<%#DataBinder.Eval%>来根据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"); 
      } 
     } 
    } 
0

这是当选择上选择的节点的的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); 
} 

的GridView

<asp:GridView ID="ChildsGridView" runat="server" AutoGenerateColumns="False" DataKeyNames="LocationID" 
         DataSourceID="ChildsObjectDataSource" Width="570px" AllowPaging="True"> 
         <Columns> 
          <asp:TemplateField> 
           <HeaderTemplate> 
            &nbsp; 
           </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" /> 

Jav aScript

function ChangeSelectedRow(sender) 
{ 
    if (SelectedRow != null) 
     SelectedRow.style.backgroundColor = OriginalColor; 
    SelectedRow = sender.parentElement.parentElement; 
    OriginalColor = SelectedRow.style.backgroundColor; 
    SelectedRow.style.backgroundColor = 'red'; 
}