2011-11-22 80 views
0

Windows 7,可視化Web開發人員快車2010,c#,asp.net,webforms。使用ctrl-F5從vwd運行程序。如何在點擊asp:listview中的linkbutton時停止頁面加載

在每個選項卡上使用具有asp:listview的選項卡。我有每個listview中的項目後面的代碼。 後面的代碼使用ID(來自項目)通過xsd從數據庫(mdf文件)中提取記錄。在頁面上填充文本框。

當我點擊一個項目時,程序會正確地抓取正確的記錄,並正確地將該記錄中的信息放入屏幕上的文本框中。問題在於它要麼刷新頁面,要麼重新加載頁面......這會導致它轉到第一個選項卡,而不是我所在的選項卡。我認爲這對用戶來說會是令人不安和令人意想不到的(這對我來說是令人不安和意外的)。

以下是我後面處理代碼的項目單擊列表視圖:

protected void lv_PBP_click(object sender, ListViewCommandEventArgs e) 
    { 
     if (!e.CommandName.Equals("Sort")) 
     { 
      int searchID = Convert.ToInt32(e.CommandArgument.ToString()); 
      TableAdapters.PBPTableAdapter pbpAdapt = 
       new TableAdapters.PBPTableAdapter(); 
      PBPDataTable tbl = pbpAdapt.GetData(searchID); 
      tbMessage.Text = tbl.Rows[0]["pMessage"].ToString(); 
      lbField2.Text = tbl.Rows[0]["pField2"].ToString(); 
      lbField3.Text = tbl.Rows[0]["pField3"].ToString(); 
     } 
    } 

下面是如何被定義的列表視圖:

<div class="tab-content" style="width:1000px;"> 
      <h1 class="tab" title="title1">title1</h1> 
      <asp:ListView runat= "server" ID="somid" DataSourceID="ads" OnItemCommand="lv_PBP_click"> 
       <LayoutTemplate> 
       <table id="table1" style="background-color:White;border-collapse:collapse;" width="100%">  
       <tr>     
        <td width="75%"> <asp:Button runat="server" ID="SortButton" 
        Text="msg" CommandName="Sort" CommandArgument="pMessage" /></td> 
        <td> <asp:Button runat="server" ID="LinkButton1" 
        Text="F2 CommandName="Sort" CommandArgument="pField2" /> </td> 
        <td> <asp:Button runat="server" ID="SortF3" 
        Text="F3" CommandName="Sort" CommandArgument="pField3" /></td> 
        </tr> 
        <tr runat="server" id="itemPlaceholder" style="background-color:White" > 
        </tr> 
       </table> 
       <asp:DataPager runat="server" ID="idxxx" PageSize="10" style="background-color:White"> 
        <Fields> 
         <asp:TemplatePagerField>    
         <PagerTemplate> 
         <b> 
         Page 
         <asp:Label runat="server" ID="CurrentPageLabel" 
          Text="<%# Container.TotalRowCount>0 ? (Container.StartRowIndex/Container.PageSize) + 1 : 0 %>" /> 
         of 
         <asp:Label runat="server" ID="TotalPagesLabel" 
          Text="<%# Math.Ceiling ((double)Container.TotalRowCount/Container.PageSize) %>" /> 
         (
         <asp:Label runat="server" ID="TotalItemsLabel" 
          Text="<%# Container.TotalRowCount%>" /> 
         records) 
         <br /> 
         </b> 
         </PagerTemplate> 
         </asp:TemplatePagerField> 

         <asp:NextPreviousPagerField 
         ButtonType="Button" 
         ShowFirstPageButton="true" 
         ShowNextPageButton="false" 
         ShowPreviousPageButton="false" /> 

         <asp:NumericPagerField 
         PreviousPageText="&lt; Prev 10" 
         NextPageText="Next 10 &gt;" 
         ButtonCount="10" /> 

         <asp:NextPreviousPagerField 
         ButtonType="Button" 
         ShowLastPageButton="true" 
         ShowNextPageButton="false" 
         ShowPreviousPageButton="false" /> 

        </Fields> 
       </asp:DataPager> 
       </LayoutTemplate> 
       <ItemTemplate> 
       <tr id="Tr1" runat="server" style="background-color:#ECE5B6;" > 
        <td><asp:LinkButton runat="server" ID="ms1" Text='<%# Eval("pMessage")%>' CommandArgument='<%# Eval("pID") %>' /></td> 
        <td><asp:Label runat="server" ID="Label1" Text='<%# Eval("pField2")%>' /></td> 
        <td><asp:Label runat="server" ID="Status" Text='<%# Eval("pSField3")%>' /></td> 
       </tr> 
       </ItemTemplate> 
       <AlternatingItemTemplate> 
       <tr id="Tr1" runat="server" style="background-color:#FAF8CC;" > 
        <td><asp:LinkButton runat="server" ID="ms2" Text='<%# Eval("pMessage")%>' CommandArgument='<%# Eval("pID") %>' /></td> 
        <td><asp:Label runat="server" ID="Label1" Text='<%# Eval("pField2")%>' /></td> 
        <td><asp:Label runat="server" ID="yyy" Text='<%# Eval("pField3")%>' /></td> 
       </tr> 

       </AlternatingItemTemplate> 

      </asp:ListView> 
    </div> 

附近的代碼對應的底部了LinkBut​​ton到列表視圖中的項目,它調用上面第一個代碼片段中的代碼。我想我錯過了按鈕的基本功能。也許按鈕(或linkbuttons)總是做一個頁面刷新(似乎不太可能)。無論如何,我想要做的就是停止頁面重新加載...怎麼樣?

OTOH,也許有一些原因,我不應該停止此頁面重新加載......也許設計師想要這種行爲。在那種情況下,我該怎麼辦?我是被迫進入ajax或者有另一種方式來做到這一點? (只需更改一些消息框的內容,而不刷新頁面...或刷新到完全相同的狀態,以使其看起來不會被刷新。)

+0

後面的代碼可以添加屬性[「onclick」] =「返回false;」鏈接按鈕,也許 – MilkyWayJoe

+0

不能得到那個工作,但謝謝。 – elbillaf

回答

4

您的懷疑是正確的。
與服務器的所有交互都涉及一個回發,它會重新加載頁面。

如果您希望頁面與服務器進行交互而無需回發,則需要使用AJAX。

+1

堅果。呃,好吧。答案就是答案。謝謝。 – elbillaf

相關問題