我要做一个相册:上面是大图片.下面是一排小图片,点击小图,大图跟着变,用下面的控件:        <asp:ScriptManager ID="ScriptManager1" runat="server">
        </asp:ScriptManager>
        和
        <asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
        <contenttemplate>        </contenttemplate>
        </asp:UpdatePanel》下面的一小排图片用的是Repeater空间绑定的asp:ImageButton,代码如下:                        <asp:Repeater runat="server" ID="tupian">
                        <ItemTemplate>                            <li>
                                <asp:ImageButton ImageUrl='<%# Eval("FPicurl") %>' OnCommand="dobutton" CommandArgument='<%# Eval("FId") %>' runat="server" ID="Button1" Height="106" Width="116" CssClass="buttonclass" />
                            </li>
                        
                        </ItemTemplate>
                        </asp:Repeater>
要实现ajax那么就要首先在后台的Page_Load中使用ScriptManager的RegisterAsyncPostBackControl()注册Button1为一个异步提交控件,代码是这个:void Page_Load(object sender, EventArgs e)    {        ScriptManager1.RegisterAsyncPostBackControl(Button1);    }然后再在button的事件后面加上
this.UpdatePanel1.Update();
问题来了,asp:ImageButton的id是自动生成的...貌似也不能用<%# Eval()%>这种绑定.那后台该怎么把这些button注册成异步提交控件???????????????????????????

解决方案 »

  1.   

    问题来了,asp:ImageButton的id是自动生成的(生成的时候,查看源代码,看看看这时候它生成的ID,绑定这个名字就可以了,生成的时候它的ID会变得)...貌似也不能用<%# Eval()%>这种绑定.那后台该怎么把这些button注册成异步提交控件???????????????????????????
      

  2.   

    我写的是button1,看源代码怎么是ctl00_ContentPlaceHolder1_tupian_ctl00_Button1,这是什么原理
      

  3.   

    .NET为了防止生成ID重复,采用的是树型生成。
    在父器控的子控件,生成的名字长了点,也不足为怪。
      

  4.   

    你说了,很多,不过好像不用AJAX也行,点下面小图标题,就用JS将上面的大图标的SRC换成下面小图标路径所属的大图标路径,就可以了。浏览器会再次下载该图片
      

  5.   

    我想了一个折中的方法...你不要用imagebutton.放一个IMG.外面套一层<a>.<a>的ID可以赋值.
      

  6.   

    不用注册什么异步提交控件的吧,像正常的控件那样使用就可以了,放在AJAX控件范围内就OK了
      

  7.   


    我明白了...如果激发局部刷新的button在<asp:UpdatePanel></asp:UpdatePanel>里面的话,就不用注册异步提交控件了,如果吧按钮放在任意的位置才需要注册,或者设置<triggers></triggers>!!!
    谢谢啦