当用户单击控件的空白部分时,如何取消选择ASP.NET GridView控件中的所有选定行?对于How to deselect all selected rows in a DataGridView control?处的类似问题,Cody Gray很好地解释了如何在DataGridView中完成此操作,但我需要的是为GridView控件实现Cody的解决方案,最好使用vb.net。感谢
答案 0 :(得分:0)
首先,asp:GridView
在任何给定的实例中最多只有一个SelectedRow
。其次,使用JavaScript不能选择或 DeSelect 行,因为Select事件是ServerSide事件而不是ClientSide事件。
标记
<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");
});
这将取消选择每个选定的行。