【问题标题】:How to deselect rows on ASP.NET GridView control如何取消选择 ASP.NET GridView 控件上的行
【发布时间】:2015-09-20 02:29:50
【问题描述】:

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

【问题讨论】:

  • 这里写了答案:[1]:stackoverflow.com/questions/4662413/…
  • 我已经看到了。我想要的只是通过单击控件的空白部分来完成该事件,就像 Cody 解释的使用 datagridview 完成的方式一样。谢谢
  • 哦,所以,基本上唯一的区别在于使用 GridView 而不是 DataGridVIew?
  • 是的...基本上就是这样

标签: asp.net vb.net gridview


【解决方案1】:

首先asp:GridView 在任何给定实例中最多只有一个SelectedRow。其次,不能使用 JavaScript SelectDeSelect 一行,因为 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:我不明白你的当用户点击控件的空白部分时,所以我将它设置为整行。

【讨论】:

  • 我的意思是单击页面上的任意位置以取消选择该行。问题是通过选择一行来显示详细信息视图。我已经创建了一个按钮,通过'GridView.SelectedIndex = -1'在代码隐藏文件中单击时取消选择,然后隐藏详细信息视图。按钮单击工作正常,但我发现页面上没有必要,如果我可以单击页面上的任意位置取消选择行,然后隐藏详细信息视图。您能否将该代码翻译成 vb.net。谢谢
【解决方案2】:

假设你有一个如下的gridview

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

gridview 中的选定行将具有某种具有选择样式的类,例如 tr 将具有一个类 '.SelectedRow'

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

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

});

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

【讨论】:

  • 我需要先说服VB.NET或ASP.NET不能做到这一点,然后我才能学会使用jquery。谢谢
猜你喜欢
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 1970-01-01
相关资源
最近更新 更多