Play Sound Using Javascript with UpdatePanel

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • adarwish
    New Member
    • Dec 2011
    • 9

    Play Sound Using Javascript with UpdatePanel

    I Have the below Asp.net Code:

    the problem is that When Timer Tick Every 30 Second and GridView Filled the javascript code is not executed !! and Sound is not played.

    I have also tried SoundPlayer Class but is not working on the Server Side can anyone provide me with a solution ?

    Code:
    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="OrdersPage.aspx.cs" Inherits="Orders_" Async="true" %>
    
    <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head runat="server">
        <title>Gazar | Orders Page</title>
        <meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
        <link rel="Stylesheet" href="StyleSheet.css" />
        <script type="text/javascript">
            function ShowProgress() {
                document.getElementById('UpdateProgress1').style.display = "inline";
            }
        </script>
    </head>
    <body>
        <form id="form1" class="center_it" runat="server">
        <asp:ToolkitScriptManager ID="ToolkitScriptManager1" EnablePageMethods="true" runat="server"></asp:ToolkitScriptManager>
        <asp:UpdatePanel ID="UpdatePanel1" runat="server">
            <Triggers>
                <asp:AsyncPostBackTrigger ControlID="Timer1" EventName="Tick" />
            </Triggers>
            <ContentTemplate>
                <table class="MainTable">
                    <tr>
                        <td style="text-align: left;" colspan="2">
                            <img id="Img2" src="~/images/gazzarlogo.png" alt="GazarBanner" runat="server" class="BannerImage" />
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <asp:Label ID="Label1" runat="server" Font-Bold="True" Font-Size="30pt" ForeColor="White"
                                Text="الطلبـــــات"></asp:Label>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click1" Text="History" CssClass="Buttons" />
                        </td>
                        <td>
                            <asp:Button ID="Exit" Text="خروج" runat="server" OnClick="Exit_Click" CssClass="Buttons" />
                        </td>
                    </tr>
                    <tr>
                        <td colspan="2">
                            <asp:GridView ID="GridViewOrders" runat="server" Style="margin-left: auto; margin-right: auto;"
                                OnRowDataBound="GridViewOrders_RowDataBound" PageSize="30" BackColor="White"
                                BorderColor="#DEDFDE" BorderStyle="None" BorderWidth="0px" CaptionAlign="Top"
                                CellPadding="4" ForeColor="Black" HorizontalAlign="Center" EnableModelValidation="True"
                                GridLines="Vertical" Width="1100px" Font-Names="Tahoma" Font-Size="10pt" Font-Bold="False"
                                OnRowCommand="GridViewOrders_RowCommand" AutoGenerateColumns="False">
                                <RowStyle BackColor="#F7F7DE" Wrap="True" />
                                <AlternatingRowStyle BackColor="White" />
                                <FooterStyle BackColor="#CCCC99" />
                                <PagerStyle BackColor="#F7F7DE" ForeColor="Black" HorizontalAlign="Left" />
                                <SelectedRowStyle BackColor="#CE5D5A" Font-Bold="True" ForeColor="White" />
                                <HeaderStyle BackColor="#6B696B" Font-Bold="True" ForeColor="White" />
                                <Columns>
                                    <asp:TemplateField HeaderText="Open" ItemStyle-Width="60px">
                                        <ItemTemplate>
                                            <asp:Button ID="ApproveBtn" Text="Open" Width="60" Height="30" runat="server" OnClientClick="ShowProgress()" />
                                        </ItemTemplate>
                                        <ItemStyle Width="70px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="ID" ItemStyle-Width="70px">
                                        <ItemTemplate>
                                            <asp:Label ID="OrderID" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "ID") %>'></asp:Label>
                                        </ItemTemplate>
                                        <ItemStyle Width="70px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Name" ItemStyle-Width="150px">
                                        <ItemTemplate>
                                            <asp:Label ID="Name" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Name") %>'></asp:Label>
                                        </ItemTemplate>
                                        <ItemStyle Width="150px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Address" ItemStyle-Width="300px">
                                        <ItemTemplate>
                                            <asp:Label ID="Address" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Address") %>'></asp:Label>
                                        </ItemTemplate>
                                        <ItemStyle Width="300px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Number" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="Number" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Number") %>'></asp:Label>
                                        </ItemTemplate>
                                        <ItemStyle Width="100px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Sent Date" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="SentDate" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Sent Date") %>'></asp:Label>
                                        </ItemTemplate>
                                        <ItemStyle Width="100px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Recieved Date" ItemStyle-Width="100px">
                                        <ItemTemplate>
                                            <asp:Label ID="RecievedDate" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Recieved Date") %>'></asp:Label>
                                        </ItemTemplate>
                                        <ItemStyle Width="100px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="# Success" ItemStyle-Width="50px">
                                        <ItemTemplate>
                                            <asp:Label ID="SuccessNo" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "# Success") %>'></asp:Label>
                                        </ItemTemplate>
                                        <ItemStyle Width="50px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="# Fake" ItemStyle-Width="50px">
                                        <ItemTemplate>
                                            <asp:Label ID="FakeNo" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "# Fake") %>'></asp:Label>
                                        </ItemTemplate>
                                        <ItemStyle Width="50px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Restaurant" ItemStyle-Width="50px">
                                        <ItemTemplate>
                                            <asp:Label ID="Restaurant" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Restaurant") %>'></asp:Label>
                                        </ItemTemplate>
                                        <ItemStyle Width="50px" />
                                    </asp:TemplateField>
                                    <asp:TemplateField HeaderText="Branch" ItemStyle-Width="50px">
                                        <ItemTemplate>
                                            <asp:Label ID="Branch" CommandName="Select" runat="server" Text='<% #DataBinder.Eval(Container.DataItem, "Branch") %>'></asp:Label>
                                        </ItemTemplate>
                                        <ItemStyle Width="50px" />
                                    </asp:TemplateField>
                                </Columns>
                            </asp:GridView>
                        </td>
                    </tr>
                </table>
            </ContentTemplate>
        </asp:UpdatePanel>
        <asp:UpdateProgress ID="UpdateProgress1" runat="server">
            <ProgressTemplate>
                <div class="container">
                    <div class="LoadingDiv">
                        <span class="LoadingLabel">Check Orders ...</span>
                        <img class="LoadingImg" src="Images/ajax-loader.gif" alt="Loading ..." />
                    </div>
                </div>
            </ProgressTemplate>
        </asp:UpdateProgress>
        <asp:Timer ID="Timer1" runat="server" Interval="30000" OnTick="Timer1_Tick" />
        </form>
    </body>
    </html>
    and code behind is:

    Code:
    protected void Timer1_Tick(object sender, EventArgs e)
    
           {
                orderDB.LogState("Time Tick");
                if (Session["UserID"] != null)
                {
                    orderDB.LogState("Session Alive");
                    FillDataGrid(int.Parse(Session["UserID"].ToString()));
                    orderDB.LogState("End fill Grid View");
                }
                else
                {
                    Response.Redirect("~/login.aspx");
                }
            }
    
    private void FillDataGrid(int UserID)
    {
    
        Orders = orderDB.GetOrdersByUser(UserID);
        orderDB.LogState("Select: " + DateTime.Now.ToString() + "\t" + Request.UserHostAddress + "\t" + Session.SessionID + "\t" + Session["UserID"].ToString());
    
        if (Orders == null)
            Response.Redirect("~/login.aspx");
    
        DataTable Table = new DataTable();
    
        Table.Columns.Add("ID", System.Type.GetType("System.String"));
        Table.Columns.Add("Name", System.Type.GetType("System.String"));
        Table.Columns.Add("Address", System.Type.GetType("System.String"));
        Table.Columns.Add("Number", System.Type.GetType("System.String"));
        Table.Columns.Add("Sent Date", System.Type.GetType("System.String"));
        Table.Columns.Add("Recieved Date", System.Type.GetType("System.String"));
        Table.Columns.Add("# Success", System.Type.GetType("System.String"));
        Table.Columns.Add("# Fake", System.Type.GetType("System.String"));
        Table.Columns.Add("Restaurant", System.Type.GetType("System.String"));
        Table.Columns.Add("Branch", System.Type.GetType("System.String"));
    
        for (int i = 0; i < Orders.Count; i++)
        {
            object[] myRow = new object[10];
            myRow[0] = Orders[i].GetId();
            myRow[1] = Orders[i].GetOwner();
            myRow[2] = Orders[i].GetAddress().getAllAddress();
            myRow[3] = Orders[i].GetPhoneNumber();
            myRow[4] = Orders[i].GetOriginalTime().ToString();
            myRow[5] = Orders[i].GetTime().ToString();
            myRow[6] = Orders[i].NoOfSuccess; //success Orders;
            myRow[7] = Orders[i].NoOfFake; //fake Orders
            myRow[8] = Orders[i].GetResName();
            myRow[9] = Orders[i].GetBranchName();
    
            Table.Rows.Add(myRow);
        }
    
        orderDB.LogState("Table Rows Count: " + Table.Rows.Count);
        GridViewOrders.DataSource = Table;
        GridViewOrders.DataBind();
    
        string sSelectedAudio = Server.MapPath("home.wav");
        if (GridViewOrders.Rows.Count != 0)
        {
            playSound(sSelectedAudio);
            orderDB.LogState("Sound Played: " + GridViewOrders.Rows.Count);
        }
        else
        {
            orderDB.LogState("Empty Grid View: " + GridViewOrders.Rows.Count);
        }
    }
    
    private void playSound(string path)
    {
        string PlaySound = "<embed src=\"" + path + "\" autostart=\"true\" hidden=\"true\"></embed>";
        Response.Write(PlaySound);
    }
Working...