2011-11-22 70 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

相关问题