如何在ASP.NET GridView控件上取消选择行

时间:2015-07-02 13:57:17

标签: asp.net vb.net gridview

当用户单击控件的空白部分时,如何取消选择ASP.NET GridView控件中的所有选定行?对于How to deselect all selected rows in a DataGridView control?处的类似问题,Cody Gray很好地解释了如何在DataGridView中完成此操作,但我需要的是为GridView控件实现Cody的解决方案,最好使用vb.net。感谢

2 个答案:

答案 0 :(得分:0)

首先,asp:GridView在任何给定的实例中最多只有一个SelectedRow 。其次,使用JavaScript不能选择 DeSelect 行,因为Select事件是ServerSide事件而不是ClientSide事件。

<小时/> 但是,通过使用JavaScript强制服务器端单击,可以解决此问题。伪代码。

标记

<asp:Button ID="demobutton" runat="server" 
    OnClick="demobutton_Click" style="display:none" />

代码隐藏

C#

protected void DemoGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
    if (e.Row.RowType == DataControlRowType.DataRow)
    {
        //TO DO: make script a global variable
        var script = "document.getElementByID('" + demobutton.ClientID + "').click();";
        e.Row.Attributes.Add("onclick", script);
    }
}
protected void demobutton_Click(object sender, EventArgs e)
{
    DemoGrid.SelectedIndex = -1;
}

VB.NET

Protected Sub DemoGrid_RowDataBound(sender As Object, e As GridViewRowEventArgs)
    If e.Row.RowType = DataControlRowType.DataRow Then
        'TO DO: make script a global variable
        Dim script = "document.getElementByID('" & demobutton.ClientID & "').click();"
        e.Row.Attributes.Add("onclick", script)
    End If
End Sub
Protected Sub demobutton_Click(sender As Object, e As EventArgs)
    DemoGrid.SelectedIndex = -1
End Sub

P.S:当用户点击控件的空白部分时,我不理解你的,所以我将其设置为整行。

答案 1 :(得分:0)

假设您有以下gridview

<asp:gridview runat=server id=gridview1>
</asp:gridview>

gridview中的选定行将包含某种具有选择样式的类,例如tr将有一个类&#39; .SelectedRow&#39;

现在使用jQuery,您可以使用以下jQuery代码从所有选定行或所有行中删除此类。

$("body").not("#<%=this.gridview1.clientid%>").click(function(){
    $("#<%=this.gridview1.clientid%> tr").removeClass("SelectedRow");

});

这将取消选择每个选定的行。