gridview не обновляется на панели обновлений

У меня есть вид сетки внутри панели обновления. Вот так.

<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>


<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" BackColor="White"
                                            BorderColor="#D9EFFD" BorderStyle="Solid" BorderWidth="1px" CellPadding="3" DataSourceID="SqlDataSource1"
                                            Font-Names="Tahoma" Font-Size="8pt" GridLines="Horizontal" Width="100%" ForeColor="#010101"
                                            ShowHeaderWhenEmpty="True">
                                            <Columns>
                                                <asp:BoundField DataField="MODE_TPT_ENTRY" HeaderText="Balance" SortExpression="MODE_TPT_ENTRY">
                                                    <HeaderStyle HorizontalAlign="Left" />
                                                    <ItemStyle Font-Bold="True" HorizontalAlign="Left" Width="120px" ForeColor="#035BAC" />
                                                </asp:BoundField>
                                                <asp:BoundField DataField="OB" HeaderText="Opening" SortExpression="OB">
                                                    <ItemStyle HorizontalAlign="Right" Width="70px" />
                                                </asp:BoundField>
                                                <asp:BoundField DataField="ISSUED" HeaderText="Arrival" SortExpression="ISSUED">
                                                    <ItemStyle HorizontalAlign="Right" Width="70px" />
                                                </asp:BoundField>
                                                <asp:BoundField DataField="UNTARE" HeaderText="UNTARE" SortExpression="UNTARE" Visible="False" />
                                                <asp:BoundField DataField="TARE" HeaderText="Tare" SortExpression="TARE">
                                                    <ItemStyle HorizontalAlign="Right" Width="70px" />
                                                </asp:BoundField>
                                                <asp:BoundField DataField="BALANCE" HeaderText="Balance" SortExpression="BALANCE">
                                                    <ItemStyle HorizontalAlign="Right" Width="70px" />
                                                </asp:BoundField>
                                                <asp:BoundField DataField="RRY" HeaderText="Recovery" SortExpression="RRY">
                                                    <ItemStyle HorizontalAlign="Right" Width="70px" />
                                                </asp:BoundField>
                                                <asp:BoundField DataField="TRANSPORT_NO" HeaderText="TRANSPORT_NO" SortExpression="TRANSPORT_NO"
                                                    Visible="False" />
                                            </Columns>
                                            <FooterStyle BackColor="White" ForeColor="#000066" />
                                            <HeaderStyle BackColor="#D9EFFD" Font-Bold="True" ForeColor="#010101" HorizontalAlign="Right" />
                                            <PagerStyle BackColor="White" ForeColor="#000066" HorizontalAlign="Left" />
                                            <RowStyle ForeColor="#101010" HorizontalAlign="Right" />
                                            <SelectedRowStyle BackColor="#669999" Font-Bold="True" ForeColor="White" />
                                            <SortedAscendingCellStyle BackColor="#F1F1F1" />
                                            <SortedAscendingHeaderStyle BackColor="#007DBB" />
                                            <SortedDescendingCellStyle BackColor="#CAC9C9" />
                                            <SortedDescendingHeaderStyle BackColor="#00547E" />
                                        </asp:GridView>


<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString3 %>"
                                                ProviderName="<%$ ConnectionStrings:ConnectionString3.ProviderName %>" SelectCommand="SELECT * from cms_production">
                                            </asp:SqlDataSource>
</ContentTemplate>
</asp:UpdatePanel>

и функция JavaScript, которая обновляет панель через 5 секунд, как это

<script type="text/javascript">
window.setInterval(function () {
__doPostBack('<%= UpdatePanel1.ClientID %>', '');
        }, 5000);
</script>

Проблема в том, что когда я изменяю данные, связанные с gridview, через пять секунд никаких изменений не отображается. Может ли кто-нибудь сказать мне, в чем проблема в моем коде или какие-либо другие дополнительные вещи, которые нужно добавить в мой код, чтобы обновить gridview внутри панели обновления. без редиректа страницы.


person user1820339    schedule 14.11.2012    source источник
comment
Сэр, я использую Sqldatasource для привязки сетки. И где написать UpdatePanel1.Update();?   -  person user1820339    schedule 14.11.2012
comment
Сэр sqldatasource уже находится в шаблоне контента, и больше нет кода, кроме столбцов gridview внутри шаблона контента.   -  person user1820339    schedule 14.11.2012
comment
Как вы меняете данные? Похоже, ваша сетка доступна только для чтения.   -  person Amiram Korach    schedule 14.11.2012
comment
Я меняю данные в таблице из базы данных оракула. ​​Я не говорю о редактировании сетки   -  person user1820339    schedule 14.11.2012


Ответы (1)


Вам потребуется вручную обновлять SqlDataSource каждый раз при обратной передаче. Если за этим нет реальной логики, вы можете просто добавить следующее в свой Page_Load:

protected void Page_Load(object sender, EventArgs e)
{
       .....

    if (IsPostBack)
    {
        SqlDataSource1.DataBind();
        GridView1.DataBind();
    }
}

И если вы хотите, чтобы это делалось ТОЛЬКО, когда UpdatePanel выполняет обратную передачу, используйте этот метод.

person Blachshma    schedule 14.11.2012
comment
Я думаю, что он тоже должен вызвать grid.DataBind() - person Amiram Korach; 14.11.2012
comment
@AmiramKorach не проверял это, но вы, вероятно, правы. Обновлено. - person Blachshma; 14.11.2012