如何停止页面加载时,链接按钮在asp:listview被点击
本文关键字:asp listview 按钮 链接 何停止 加载 | 更新日期: 2023-09-27 18:15:37
Windows 7, visual web developer express 2010, c#, asp.net, webforms。用ctrl-F5从vwd.
运行程序在每个选项卡上使用asp:listview。我有代码背后的项目在每个列表视图。后面的代码使用ID(来自项目)通过xsd从数据库(mdf文件)中提取记录。在页面上填充文本框。
当我单击一个项目时,程序正确地获取正确的记录,并正确地将该记录中的信息放入屏幕上的文本框中。问题是,它要么刷新或重新加载页面…这导致它转到第一个标签,而不是我所在的标签。我想这会让用户感到不安和意外(这对我来说是令人不安和意外的)。
下面是我如何处理listview中项目单击的代码:
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();
}
}
listview是这样定义的:
<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>
代码底部的LinkButtons对应于listview中的项目,这些项目调用了上面第一个代码片段中的代码。我想我忽略了一些关于按钮的基本功能。也许按钮(或链接按钮)总是刷新页面(似乎不太可能)。总之,我想做的是停止页面重新加载…如何?
OTOH,也许有一些原因我不应该停止这个页面的重新加载…也许设计师想要这种行为。那样的话,我该怎么办呢?我是被迫使用ajax还是有其他方法来做到这一点?(只是更改一些消息框的内容而不刷新页面…或者刷新到原来的状态,这样看起来就不像刷新过了
你的怀疑是对的。
与服务器的所有交互都涉及回发,这将重新加载页面。
如果希望页面与服务器交互而不需要回发,则需要使用AJAX。