Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ASP.NET : Displaying an alert from C# code-behind

I have an asp.net page with a c# code-behind. I am trying to have the code-behind display an 'alert' if the selected-index of a gridview object is changed without selecting 'confirm' or 'cancel'. The code for detecting if confirm or cancel was selected is working, however my message is never displayed. The 'Alert.Show" code was borrowed from: http://archive.devnewz.com/devnewz-3-20061129JavaScriptAlertShowmessagefromASPNETCodebehind.html .

Alert.show works just fine when tested from the page_load(), for example, but not in my selected_index_changed method. Any idea why? Perhaps having to do with how Alert.Show() is implemented?

if (ChangeAttemptedId && !IsSavedId)
{
 Alert.Show("Dispatch assignment saved, but you forgot to click Confirm or Cancel!)");
}

ASP.NET CODE:

<asp:Table ID="Table1" runat="server" CssClass="DefaultTable">
    <asp:TableRow runat="server">
        <asp:TableCell runat="server" Width="50%" VerticalAlign="Top" HorizontalAlign="Left">
            <asp:UpdatePanel ID="detailsUP" runat="server" UpdateMode="Always" ChildrenAsTriggers="True">
                <ContentTemplate>
                    <!--
                    <asp:Label ID="label1" runat="server" Text="Car To Dispatch: " CssClass="DefaultLabel"></asp:Label>
                    <asp:DropDownList ID="CarsDDL" runat="server" DataSourceID="VehiclesEDS" DataMember="CarNum" DataTextField="CarNum" AppendDataBoundItems="True" Font-Bold="True">
                        <asp:ListItem Selected="True" Text="-"></asp:ListItem>
                    </asp:DropDownList>
                    -->
                    <asp:DetailsView ID="RideToAssignDV" runat="server" Height="400px" 
                        Width="400px" AutoGenerateRows="False" 
                        BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" 
                        CellPadding="3" GridLines="Vertical">
                        <AlternatingRowStyle BackColor="#DCDCDC" />
                        <EditRowStyle BackColor="#008A8C" Font-Bold="True" ForeColor="White" />
                        <Fields>
                            <asp:BoundField DataField="AssignedCar" HeaderText="Car" 
                                SortExpression="AssignedCar" NullDisplayText="---" />            
                            <asp:BoundField DataField="Name" HeaderText="Name" 
                                SortExpression="Name" NullDisplayText="---" />
                            <asp:BoundField DataField="Phone" HeaderText="Phone" 
                                SortExpression="Phone" NullDisplayText="---" />
                            <asp:BoundField DataField="NumPatrons" HeaderText="Size" 
                                SortExpression="NumPatrons" NullDisplayText="---" />                
                            <asp:BoundField DataField="PickupAddress" HeaderText="Pickup Address" 
                                SortExpression="PickupAddress" NullDisplayText="---" />
                            <asp:BoundField DataField="DropoffAddress" HeaderText="Drop-Off Address" 
                                SortExpression="DropoffAddress" NullDisplayText="---" />
                            <asp:BoundField DataField="CreatedBy" HeaderText="Created By" 
                                SortExpression="CreatedBy" NullDisplayText="---" />
                            <asp:BoundField DataField="TimeOfCall" HeaderText="Call Time" 
                                SortExpression="TimeOfCall" ReadOnly="True" NullDisplayText="---" />
                        </Fields>
                        <FooterStyle BackColor="#CCCCCC" ForeColor="Black" BorderStyle="Inset" BorderColor="#C6940D" HorizontalAlign="Center" Height="25px" />
                        <FooterTemplate>
                            <asp:Button ID="confirmButton" runat="server" Text="Confirm" ForeColor="Green" HorizontalAlign="Center" OnClick="confirmButton_Click"/>
                            <asp:Button ID="cancelButton" runat="server" Text="Cancel" ForeColor="Red" HorizontalAlign="Center" 
                                OnClick="cancelButton_Click" OnClientClick="displayTopTen();" />
                        </FooterTemplate>
                        <HeaderStyle BackColor="#004812" Font-Bold="True" />
                        <PagerStyle BackColor="#999999" ForeColor="Black" />
                        <RowStyle BackColor="#EEEEEE" ForeColor="Black" />                            
                    </asp:DetailsView>
                </ContentTemplate>
            </asp:UpdatePanel>
        </asp:TableCell>

        <asp:TableCell runat="server" Width="50%">
            <asp:UpdatePanel ID="mapUP" runat="server" UpdateMode="Conditional">
                <ContentTemplate>
                    <div id="map_canvas" style="height: 400px; width:400px;"></div>
                </ContentTemplate>
            </asp:UpdatePanel>
        </asp:TableCell>
    </asp:TableRow>
</asp:Table>

<br />
<asp:Label ID="GV_Label1" runat="server" Text="Car To Dispatch: " CssClass="DefaultLabel"></asp:Label>

<asp:UpdatePanel ID="SelectCarUP" runat="server" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:GridView ID="VehiclesGridView" runat="server" AllowPaging="True" 
            AllowSorting="True" DataSourceID="VehiclesEDS" AutoGenerateColumns="False" 
            onselectedindexchanged="VehiclesGridView_SelectedIndexChanged" 
            BackColor="White" BorderColor="#999999" BorderStyle="None" BorderWidth="1px" 
            CellPadding="3" GridLines="Vertical" ShowHeaderWhenEmpty="True" AutoPostBack="True">
            <AlternatingRowStyle BackColor="#DCDCDC" />
            <Columns>
                <asp:TemplateField ShowHeader="False">
                    <ItemTemplate>
                        <asp:LinkButton ID="GVSelectButton" runat="server" CausesValidation="False" 
                            CommandName="Select" Text="Select"></asp:LinkButton>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="CarNum" HeaderText="Car" ReadOnly="True" 
                    SortExpression="CarNum" />
                <asp:BoundField DataField="CurrPassengers" HeaderText="Passengers" 
                    ReadOnly="True" SortExpression="CurrPassengers" />
                <asp:BoundField DataField="MaxPassengers" HeaderText="Capacity" ReadOnly="True" 
                    SortExpression="MaxPassengers" />
                <asp:BoundField DataField="Status" HeaderText="Status" ReadOnly="True" 
                    SortExpression="Status" />
                <asp:BoundField DataField="StartAdd" HeaderText="Pick-Up Address" 
                    ReadOnly="True" SortExpression="StartAdd" />
                <asp:BoundField DataField="EndAdd" HeaderText="Drop-Off Address" 
                    ReadOnly="True" SortExpression="EndAdd" />
                <asp:BoundField DataField="AvgRideTime" HeaderText="Avg. Ride Time" 
                    ReadOnly="True" SortExpression="AvgRideTime" />
            </Columns>
            <FooterStyle BackColor="#CCCCCC" ForeColor="Black" />
            <HeaderStyle BackColor="#004812" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#999999" ForeColor="Black" HorizontalAlign="Center" />
            <RowStyle BackColor="#EEEEEE" ForeColor="Black" />
            <SelectedRowStyle BackColor="#C6940D" Font-Bold="True" ForeColor="White" />
            <SortedAscendingCellStyle BackColor="#F1F1F1" />
            <SortedAscendingHeaderStyle BackColor="#C6940D" />
            <SortedDescendingCellStyle BackColor="#CAC9C9" />
            <SortedDescendingHeaderStyle BackColor="#9F770B" />
        </asp:GridView>
    </ContentTemplate>
</asp:UpdatePanel>
like image 307
SHeinema Avatar asked Jan 24 '12 20:01

SHeinema


4 Answers

Description

Assuming i understand your question.

You can use the ScriptManager to show a javascript alert message.

Sample

protected void Page_Load(object sender, EventArgs e)
{
    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), 
          "err_msg", 
          "alert('Dispatch assignment saved, but you forgot to click Confirm or Cancel!)');",
          true);
}

More Information

  • MSDN - ClientScriptManager.RegisterStartupScript Method
like image 164
dknaack Avatar answered Nov 14 '22 00:11

dknaack


private void MessageBox(string message,string title="title")
{
    ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), title,    "alert('" + message + "');", true);
}

It can be useful: http://www.codeproject.com/Questions/311503/How-to-use-javascript-alert-message-in-code-behind

like image 28
Amin Pourhadi Avatar answered Nov 14 '22 00:11

Amin Pourhadi


If you want a single piece of client-side JavaScript to run when the page loads, you can register a startup script in your code-behind:

if(!ClientScript. IsStartupScriptRegistered(typeof(Page), "alert"))
  string script = "<script>";
  script += "alert('";
  script += "Dispatch assignment saved, but you forgot to click Confirm or Cancel!";
  script += "');";
  script += "</script>";
  ClientScript.RegisterStartupScript(typeof(Page), "alert", script); 
}

ASP.NET will take care of putting the <script> in your HTML and calling it when the page is loaded.

like image 2
Michiel van Oosterhout Avatar answered Nov 13 '22 23:11

Michiel van Oosterhout


Your asp:ListBox must have AutoPostBack="True" if the selected_index_changed event should be raised by changing index.

for example

    <asp:ListBox ID="ListBox1" runat="server" 
        AutoPostBack="True" OnSelectedIndexChanged="selected_index_changed">
        <asp:ListItem>one</asp:ListItem>
        <asp:ListItem>two</asp:ListItem>
        <asp:ListItem>three</asp:ListItem>
    </asp:ListBox>'
like image 1
MatteKarla Avatar answered Nov 13 '22 23:11

MatteKarla