【问题标题】:UpdatePanel is AsyncPostBack is called but control inside the update panel is not changingUpdatePanel 是 AsyncPostBack 被调用,但更新面板内的控制没有改变
【发布时间】:2013-12-16 07:47:06
【问题描述】:

我的更新面板正在调用该函数,在调试过程中我看到它的内容正在更新到相应的控件。然而,一切都没有改变。如果我要切换到回发,它可以工作。

c# code 

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack) init();
}

public static int curr;     
public static int Max;
private void init() 
{
  curr = 0;
  Max= 10;
  LoadSlider(true);
}

private void LoadSlider(bool next)
{
        int num = 0;
        while (num != 2)
        {
            if (curr == Max) curr = 1;
            if (curr == 0) curr = Max - 1;

            string query = "select product_id, name_p, image1_p from product " +
                   "inner join series on series_id = series_p " +
                   "inner join story on story_p = story_id " +
                   "where delete_display= 0 and delete_display_s = 0 and delete_display_p= 0 and display_p = 1 and display = 1 and display_s = 1 ";
            query += " and product_id = " + curr.ToString();

            JB.CommandResponse response = JB.Master.DataBase.ExecuteQuery(query);
            if (0 < response.Get_returnCode()) return;
            if ((response.Get_DataRecords().Rows).Count == 0)
            {
                if (next) ++curr; else --curr;
                continue;
            }
            System.Data.DataRow row = response.Get_DataRecords().Rows[0];

            if (num == 0)
            {
                Label1_title.Text = row["name_p"].ToString();
                Image1.ImageUrl = row["image1_p"].ToString();
                LinkButton1.PostBackUrl = "productdetails.aspx?id=" + row["product_id"].ToString();
            }

            if (num == 1)
            {
                Label2_title.Text = row["name_p"].ToString();
                Image2.ImageUrl = row["image1_p"].ToString();
                LinkButton2.PostBackUrl = "productdetails.aspx?id=" + row["product_id"].ToString();
            }


            if (next) ++curr; else --curr;
            ++num;
        }
}

protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
  LoadSlider(false);
}
protected void ImageButton2_Click(object sender, ImageClickEventArgs e)
{
  LoadSlider(true);
}

asp.net -------------------------------------------------------------------------------


<asp:ScriptManager ID="ScriptManager2" runat="server" EnablePartialRendering="true" ></asp:ScriptManager>


                <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                    <Triggers>
                        <asp:AsyncPostBackTrigger ControlID="ImageButton1" EventName="click" />
                                <asp:AsyncPostBackTrigger ControlID="ImageButton2" EventName="click" />

                    </Triggers>

                    <ContentTemplate>
                        <script type="text/javascript">
                            Sys.Application.add_load(BindEvents);
                        </script>

                        <div id="article_3_1" class="left"><asp:ImageButton ID="ImageButton1" runat="server" ImageUrl="~/Sites/Images/Base/prev_main.png" OnClick="ImageButton1_Click" /></div>


                        <div id="article_3_2" class="left">
                            <div id="article_3_top"></div>
                            <div class="clear" style="height: 18px;"></div>
                            <!-- End of top -->




                            <div class="slider left" id="slider_1">
                                <div class="slider_image"><asp:Image ID="Image1" runat="server" CssClass="slider_image_w" /></div>
                                <div class="slider_border" id="border_1"></div>
                                <div class="slider_text">

                                    <asp:Label ID="Label1_title" runat="server" CssClass="bold em12"></asp:Label>
                                    <div class="clear"></div>
                                    <asp:LinkButton ID="LinkButton1" runat="server" CssClass="em12 gray">More</asp:LinkButton>
                                </div>
                            </div> 
                            <div class="slider_gap left"></div>


                            <div class="slider left" id="slider_2">
                                <div class="slider_image"><asp:Image ID="Image2" runat="server" CssClass="slider_image_w" /></div>
                                <div class="slider_border" id="border_2"></div>
                                <div class="slider_text">

                                    <asp:Label ID="Label2_title" runat="server" CssClass="bold em12"></asp:Label>
                                    <div class="clear"></div>
                                    <asp:LinkButton ID="LinkButton2" runat="server" CssClass="em12 gray">More</asp:LinkButton>
                                </div>
                            </div> 
                            <div class="slider_gap left"></div>          
                        </div>


                        <div id="article_3_3" class="left"><asp:ImageButton ID="ImageButton2" runat="server" ImageUrl="~/Sites/Images/Base/next_main.png" OnClick="ImageButton2_Click"  /></div>
                    </ContentTemplate>

                </asp:UpdatePanel>

JB 是我调用查询数据库的 dll。我想指出这一点。函数正在触发,控制文本正在被替换。但是,控件不会更新内容。

【问题讨论】:

  • 你是怎么更新的?使用按钮什么的?
  • 有你的ImageButton AutoPostBack="True" 财产吗?
  • 嗨,没有。但它确实启用了我认为是回发的功能

标签: asp.net updatepanel asynchronous-postback


【解决方案1】:

更新面板不会更新,直到 ImageButton1 和 ImageButton2 点击事件触发。当您为更新面板编写触发器时。在页面加载初始化中你想更新然后你必须调用 图像按钮 1。在页面加载中调用 buttonclick 编写代码imagebutton1.PerformClick()

private void init() 
{
  curr = 0;
  Max= 10;
  ImageButton1_Click(null, new ImageClickEventArgs(0, 0));
}

【讨论】:

  • 嗯。在页面加载期间。控件根据我的功能显示。但是,在我点击我的 imageButton 之后。里面的控件没有更新。
  • 我不明白你的意思是写初始化方法吗?
  • 嗨,对不起,asp:ImageButton 没有成员函数调用 PerformClick()
  • 尝试 ImageButton1_Click(null, new ImageClickEventArgs(0, 0));
猜你喜欢
  • 1970-01-01
  • 2014-11-04
  • 2012-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 1970-01-01
相关资源
最近更新 更多