C# 带HyperLinkField的GridView阻止选择

C# 带HyperLinkField的GridView阻止选择,c#,asp.net,gridview,C#,Asp.net,Gridview,我有以下GridView,其中包含信息列和行末尾的详细信息超链接: <cml:DataGrid ID="gvDados" DataKeyNames="Codigo_da_Agencia, Codigo_Do_Agente" runat="server" AutoGenerateColumns="False" AllowPaging="false" SkinID="datagridSkin" TotalRecords="0" OnSelectedIndexCh

我有以下GridView,其中包含信息列和行末尾的详细信息超链接:

<cml:DataGrid ID="gvDados" DataKeyNames="Codigo_da_Agencia, Codigo_Do_Agente" runat="server" AutoGenerateColumns="False" AllowPaging="false"
                SkinID="datagridSkin" TotalRecords="0" OnSelectedIndexChanged="gvDados_SelectedIndexChanged"
                OnPageIndexChanging="gvDados_PageIndexChanging" HeaderStyle-Wrap="false">
                <Columns>
                    <asp:BoundField DataField="Codigo_Do_Agente" HeaderText="Codigo_Do_Agente" SortExpression="Codigo_Do_Agente" ItemStyle-Wrap="false"/>
                    <asp:BoundField DataField="Codigo_Da_Agencia" HeaderText="Codigo_Da_Agencia" SortExpression="Codigo_Da_Agencia" ItemStyle-Wrap="false" />
                    <asp:BoundField DataField="Nome_Do_Contato" HeaderText="Nome_Do_Contato" SortExpression="Nome_Do_Contato" ItemStyle-Wrap="false"/>
                    <asp:BoundField DataField="Nome_Da_Agencia" HeaderText="Nome_Da_Agencia" SortExpression="Nome_Da_Agencia" ItemStyle-Wrap="false"/>
                    <asp:BoundField DataField="Telefone" HeaderText="Telefone" SortExpression="Telefone" ItemStyle-Wrap="false"/>
                    <asp:BoundField DataField="Numero" HeaderText="Numero" SortExpression="Numero" ItemStyle-Wrap="false"/>
                    <asp:BoundField DataField="Codigo_Do_Logradouro" HeaderText="Codigo_Do_Logradouro" SortExpression="Codigo_Do_Logradouro" ItemStyle-Wrap="false"/>
                    <asp:BoundField DataField="Apartamento" HeaderText="Apartamento" SortExpression="Apartamento" ItemStyle-Wrap="false"/>
                    <asp:BoundField DataField="Complemento" HeaderText="Complemento" SortExpression="Complemento" ItemStyle-Wrap="false"/>
                    <asp:BoundField DataField="Codigo_Do_Bairro" HeaderText="Codigo_Do_Bairro" SortExpression="Codigo_Do_Bairro" ItemStyle-Wrap="false"/>
                    <asp:BoundField DataField="DTHR" HeaderText="DTHR" SortExpression="DTHR" ItemStyle-Wrap="false"/>
                    <asp:HyperLinkField DataTextField="Codigo_Da_Agencia" DataTextFormatString="Detalhe" DataNavigateUrlFields="Codigo_Da_Agencia, Codigo_Do_Agente" 
                        HeaderText="Detalhes" DataNavigateUrlFormatString="../../Controls/Detalhes/Agencia.aspx?codigoAgencia={0}&codigoAgente={1}" Target="_blank"  />
                </Columns>
            </cml:DataGrid>

一切正常,单击超链接会打开一个新选项卡。但我的问题是该行也被选中

我想知道是否有办法防止在单击超链接时选择行。或者,如果有方法在codebehind中的方法
PageIndexChanging
上验证单击的最后一列


提前谢谢

当用户单击SelectionIndex\u Changeing事件中的特定列时,您可以取消所选索引,如SelectedRow的msdn示例中所示。

我必须说,在进行了大量绝望的尝试后,我发现了解决方案,这相当令人困惑

我有一个扩展原始GridView的自定义类,然后我重写Render()如下:

protected override void Render(HtmlTextWriter writer)
    {
        foreach (GridViewRow row in this.Rows)
            if (row.RowType == DataControlRowType.DataRow)
                foreach (DataControlFieldCell cell in row.Cells)
                    if ((cell.ContainingField).HeaderText != "Detalhes")
                        cell.Attributes["onclick"] = this.Page.ClientScript.GetPostBackClientHyperlink(this, string.Format("Select${0}", row.RowIndex), true);

        base.Render(writer);
    }
对于每个单元格,我将验证标题名称是否为详细名称。如果不是的话,我会加一片安替比妥


老实说,我不认为它很漂亮,但至少它起作用了:p

是否有
RowSelection
RowSelected
属性可以在GridView上设置?@DJKRAZE我看不到类似的东西here@ChristopherFreyburg而不是超链接字段,尝试在
模板字段中使用
链接按钮
。感谢您的回复。你怎么知道哪个栏目被点击了?我在发表评论后意识到。。我发现这篇文章很好地扩展了gridview,并在CodeProject上获得了cellclick事件。。希望这有帮助。。