Tell me more ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

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>
share|improve this question
What happens when you step through your code? Can you post the entire method? – Mark Kram Jan 24 '12 at 20:57
Maybe the condition is not true at all. Did you try o debug? – Adrian Iftode Jan 24 '12 at 20:59
Is the AutoPostBack property of the GridView set to true? It might be that the selected_index_changed event isn't firing. – Tobi Lehman Jan 24 '12 at 21:00
Thanks for the thoughts, I ran the debugger and it is definitely getting into the selected_index_changed method... it even passes over the Alert.Show(), it's just that nothing happens. That's why I'm a bit stuck.. I posted the full code above ^^ – SHeinema Jan 25 '12 at 1:12
...Ah seems I found another way below--> still odd it wouldn't work this way though...thanks for the help! – SHeinema Jan 25 '12 at 1:20
add comment (requires an account with 50 reputation)

4 Answers

up vote 3 down vote accepted

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

share|improve this answer
Sweet, well I initially thought this wouldn't do it since I wanted the alert displayed only in the specific instance I described, but after thinking a second, changing the index causes a post-back and thus calls the page_load again.. so it works! Thank you. Still..it's odd that what I was using wasn't working. – SHeinema Jan 25 '12 at 1:19
Glad to help! Have a nice day! – dknaack Jan 25 '12 at 9:00
add comment (requires an account with 50 reputation)

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>'
share|improve this answer
Good thought, tried it but no luck..Thanks though! – SHeinema Jan 25 '12 at 1:19
add comment (requires an account with 50 reputation)

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.

share|improve this answer
add comment (requires an account with 50 reputation)
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

share|improve this answer
add comment (requires an account with 50 reputation)

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.