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="< Prev 10"
NextPageText="Next 10 >"
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>
附近的代碼對應的底部了LinkButton到列表視圖中的項目,它調用上面第一個代碼片段中的代碼。我想我錯過了按鈕的基本功能。也許按鈕(或linkbuttons)總是做一個頁面刷新(似乎不太可能)。無論如何,我想要做的就是停止頁面重新加載...怎麼樣?
OTOH,也許有一些原因,我不應該停止此頁面重新加載......也許設計師想要這種行爲。在那種情況下,我該怎麼辦?我是被迫進入ajax或者有另一種方式來做到這一點? (只需更改一些消息框的內容,而不刷新頁面...或刷新到完全相同的狀態,以使其看起來不會被刷新。)
後面的代碼可以添加屬性[「onclick」] =「返回false;」鏈接按鈕,也許 – MilkyWayJoe
不能得到那個工作,但謝謝。 – elbillaf