2015-09-03 52 views
0

目前,我有一個從SQL數據源中提取的GridView。每一行都有一個摘要,當用戶點擊該行的擴展時,他們會得到一個DetailsView以及該特定項目的詳細信息。如何讓一個SQL查詢只在用戶「展開」一個gridviewrow時觸發?

我正在尋找一種方式來使它成爲DetailsView僅在展開行時綁定到DataSource。目前它發生在RowDataBound上,這會導致查詢堆在SQL服務器和ASP NET服務器之間來回切換。

我也想使用Bootstrap展開和摺疊這些行,所以它在展開或摺疊時看起來不錯。

任何幫助將非常感謝:)我真的試圖找到一些資源,可以幫助我在上面,但我已經來了bumpkis。我得到的最接近的是AJAX CollapsiblePanel,但它無論如何都會加載Page_Load中的所有內容。

回答

1

您在這裏爭奪兩個不同的領域,而這個評論是一個使問題更加複雜:

我也想使用引導程序來展開和摺疊這些行,所以它看起來好當它膨脹或崩潰。 <

我所做的就是利用BS面板和一箇中繼器,並用這種方法,你可以你需要一個click事件仍會數據綁定的細節,但裏面你的項目模板一些隱藏的控制你的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> 

+0

好吧,如果我不想以這種方式運行,這樣的數據是在第一頁加載填寫,怎麼會我這樣做呢? –

相關問題