1

我在面板中有一个数据列表

<asp:Panel ID="Panel1" runat="server"  ScrollBars="Vertical">
  <asp:DataList ID="DataList1" runat="server" RepeatDirection="Horizontal"  OnItemDataBound="DataList1_ItemDataBound" CaptionAlign="Left">
    <ItemTemplate>
       <asp:ImageButton ID="btn1" runat="server" ImageUrl='<%#"~/Images.ashx?Name=" +DataBinder.Eval(Container.DataItem, "Path") %>'
           OnCommand="Item_Command" CommandArgument='<%# Eval("Id").ToString() +";"+Eval("Path")%>' />
    </ItemTemplate>
  </asp:DataList>
</asp:Panel>

在 Item_Command 上,我将样式添加到 btn1,例如边框和颜色,并获取所选项目的 id

string[] str = e.CommandArgument.ToString().Split(';');
Id = Convert.ToInt32(str[0]);

当我选择正在跳转的项目页面时,假设我已经将浏览器滚动条滚动到底部并选择了一个图像浏览器滚动在顶部,然后它又在底部,在 Item_Command 上,我启用和禁用了一些其他的 btn数据列表,如果我将数据列表保留在更新面板中,那么所有其他 btn 都没有启用或禁用,这就是我不使用更新面板的原因。我拥有更新面板内的所有控件。我尝试了如何在任何事件触发后保留浏览器滚动位置但它不起作用,我正在设置

Page.MaintainScrollPositionOnPostBack = true;
AutoEventWireup="true"

那也不适合我。我正在使用 VS 2010, 4.0 和 C#。

有人请告诉我当用户单击数据列表项时如何停止页面跳转并保持 panel1 和浏览器滚动位置?

提前致谢..

4

3 回答 3

2

像这样在图像按钮的客户端单击事件上使用客户端功能

javascript:无效(0);

,它在更新面板中对我有用,

<asp:ImageButton OnClientClick="javascript:void(0);" ID="btn1" runat="server" ImageUrl="~/Help2.png" AlternateText="asas"/>

编辑

  1. 将按钮和数据列表放在更新面板中。放

UpdateMode=条件

对于 udpatePanel。

  1. 当您对 dataList 行执行操作时。只需像这样手动更新更新面板

// 你的图片按钮事件

YourUpdatePanel.Update();

这加上我之前发布的内容应该可以解决您的问题。此外,您可能不需要 MainScrollPositionOnPostBack=true 使用上面的方法。

达米安。

于 2012-03-07T07:31:40.997 回答
2

好吧,这里的想法是:使用一个大的更新面板,覆盖整个页面以保持页面滚动,或者使用多个更新面板来覆盖您想要更新的所有项目!

于 2012-03-07T07:58:47.573 回答
0

尝试MaintainScrollPositionOnPostback在 Page 标签中设置 true:

 <%@ Page (...) MaintainScrollPositionOnPostback="true" (...) %> 
于 2012-03-07T08:04:30.017 回答