如何使SQL查询仅在用户“展开”时触发?gridviewrow
本文关键字:gridviewrow 展开 SQL 何使 查询 用户 | 更新日期: 2023-09-27 18:10:58
目前,我有一个GridView,从SQL数据源拉。每行都有一个摘要,当用户单击行上的expand时,他们会得到一个DetailsView,其中包含该特定项目的详细信息。
我正在寻找一种方法,使其使DetailsView仅绑定到数据源时,行展开。目前它发生在RowDataBound上,这导致SQL服务器和asp.net服务器之间来回传递大量查询。
我还想使用Bootstrap来展开和折叠这些行,所以当它展开或折叠时看起来很好。
任何帮助将是非常感激:)我真的试图找到一些资源,可以帮助我在上面,但我遇到了磕磕绊绊。我得到的最接近的是一个AJAX折叠面板,但它加载一切在Page_Load。
您在这里与两个不同的领域作斗争,这条评论使它变得更加复杂:
我还想使用Bootstrap展开和折叠这些行,这样当它展开或折叠时看起来很好。<</p>
我所做的是使用BS面板和重复器,使用这种方法,您仍然可以在单击事件上绑定详细信息,但您需要在项目模板中隐藏一些控件,以便DetailsView绑定正确的数据。当你"循环"你的摘要数据时,你需要提供一个精确的链接到BS扩展子-可能是一个标识符,然后是另一个隐藏的控件。在服务器上运行链接,这样你就可以有一个点击事件,并在那里分配数据源和数据绑定。
根据加载数据所需的时间,您可以考虑避免每次点击都进行数据绑定。如果你正在使用BS来使它变得优雅,那么添加回发似乎会适得其反——至少在用户体验/优雅方面是这样。我理解为什么要避免这么多的数据调用。
希望这能让你开始:
<asp:Repeater ID="RepeatCont" runat="server" ClientIDMode="Static">
<HeaderTemplate>
<div class="panel-inner">
<div class="panel-group" id="accCont"> // parent
</HeaderTemplate>
<ItemTemplate>
<div class="panel panel-dark-gray">
<div class="panel-heading">
<h5 class="panel-title">
<a class="panel-toggle" data-toggle="collapse" data-parent="#accCont" href='<%# "#" + Eval("MATCHID1") %>'> // add a postback here with linkbutton or javascript postback force - easier just do bind your child data because you'll have two different trying to happen - postback and data-toggle
<div>
//stuff on the panel
</div>
<div class="clearfix">
<br />
</div>
</a>
</h5>
</div>
<div id='<%# Eval("MATCHID1") %>' class="panel-body collapse">
//Hidden label with your MATCH ID 1 again - this is where you will tell your DetailsView to look for parameter
//put your details view here
</div>
</div>
</ItemTemplate>
<FooterTemplate>
</div>
</div>
</FooterTemplate>