UpdatePanel называется AsyncPostBack, но элемент управления внутри панели обновления не изменяется

Моя панель обновлений вызывает функцию, и во время процесса отладки я видел, что содержимое обновляется до соответствующего элемента управления. Однако ничего не меняется. Если бы я должен был переключиться на обратную передачу, это работает.

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 - это моя база данных для вызываемых запросов. Я хотел бы указать на это. Функция срабатывает, а управляющий текст заменяется. Тем не менее, элемент управления не обновляет содержимое.

1 ответ

Решение

Панель обновления не будет обновляться до тех пор, пока не начнутся события щелчка ImageButton1 и ImageButton2. как вы пишете триггеры для панели обновления. в загрузке страницы init вы хотите обновить, затем вы должны вызвать imagebutton1. Чтобы позвонить, нажмите кнопку, введите код в загрузке страницы. imagebutton1.PerformClick()

private void init() 
{
  curr = 0;
  Max= 10;
  ImageButton1_Click(null, new ImageClickEventArgs(0, 0));
}
Другие вопросы по тегам