VIPUL PARMAR
VIPUL PARMAR

Reputation: 292

Problems in DropDownList with updatepanel

I have two DropDownList with update panel when i select value from first dropdownlist then in second dropdownlist display data related first. But there is problem at run time it can't display dropdownlist and continuously refresh this page.

So please help to solve this problem.

Here is my code ASPX PAGE

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AddRoomPrice.aspx.cs" Inherits="AddRoomPrice" %>

<!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" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <title>Presha Admin</title>
    <style type="text/css">
        @import url("css/style.css");
        @import url('css/style_text.css');
        @import url('css/form-buttons.css');
        @import url('css/link-buttons.css');
        @import url('css/menu.css');
        @import url('css/statics.css');
        @import url('css/messages.css');
        @import url('css/table-sorter.css');
        @import url('css/tabs.css');
        @import url('css/forms.css');
        @import url('css/datepicker.css');
        @import url('css/jquery.fancybox-1.3.4.css');
        @import url('css/accordions.css');
        @import url('css/jquery.treeview.css');
        @import url('css/wysiwyg.css');
        @import url('css/wysiwyg.modal.css');
        @import url('css/wysiwyg-editor.css');
    </style>

    <script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>

    <link rel="shortcut icon" href="gfx/Favicon.png">

    <link rel="stylesheet" type="text/css" href="css/component.css" />
    <script type="text/javascript" src="js/modernizr.custom.js"></script>

    <!--[if lte IE 8]>
        <script type="text/javascript" src="js/excanvas.min.js"></script>
    <![endif]-->


</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
    <div class="container">
        <div class="logo-labels">
            <a href="Default.aspx"><img id="logo" runat="server" src="~/gfx/logo.png" height="50" /></a>
            <ul>
                <li><asp:Label ID="lblAdmin" runat="server" Text="Wel come "></asp:Label></li>
                <li class="logout"><asp:LinkButton ID="lnkLogout" runat="server" onclick="lnkLogout_Click"><span>Logout</span></asp:LinkButton></li>
            </ul>
        </div>
        <div class="menu-search">
            <ul>
                <li><a href="Default.aspx">Home</a></li>
                <li><a href="#">Hotel</a>
                    <ul>
                        <li><a href="HotelList.aspx">Hotel List</a></li>
                        <li><a href="AddHotel.aspx">Add Hotel</a></li>
                    </ul>
                </li>
                <li><a href="#">Hotel Album</a>
                    <ul>
                        <li><a href="HotelAlbumList.aspx">Album List</a></li>
                        <li><a href="AddHotelAlbum.aspx">Add Album</a></li>
                    </ul>
                </li>
                <li><a href="#">Hotel Facility</a>
                    <ul>
                        <li><a href="HotelFacilityList.aspx">Facility List</a></li>
                        <li><a href="AddHotelFacility.aspx">Add Facility</a></li>
                    </ul>
                </li>
                <li><a href="#">Category</a>
                    <ul>
                        <li><a href="RoomCategoryList.aspx">Category List</a></li>
                        <li><a href="AddRoomCategory.aspx">Add Category</a></li>
                    </ul>
                </li>
                <li class="current"><a href="#">Room Price</a>
                    <ul>
                        <li><a href="RoomPriceList.aspx">Price List</a></li>
                        <li><a href="AddRoomPrice.aspx">Add Price</a></li>
                    </ul>
                </li>
                <li><a href="AddFacility.aspx">New Facility</a></li>
                <li><a href="#">Admin</a>
                    <ul>
                        <li><a href="AdminList.aspx">Admin List</a></li>
                        <li><a href="AddAdmin.aspx">Add Admin</a></li>
                    </ul>
                </li>
                <li><a href="Inquiry.aspx">Inquiry</a></li>
                <li><a href="GetLatitudeLongitude.aspx" target="_blank">Map</a></li>

            </ul>
        </div>
        <div class="breadcrumbs">
            <ul>
                <li class="home"><a href="Default.aspx"></a></li>
                <li class="break">&#187;</li>
                <li><a href="AddRoomPrice.aspx">Add Room Price</a></li>
            </ul>
        </div>
        <div class="section">
            <div class="box">
                <div class="title">
                    <h2>Add/Edit Room Category</h2>
                </div>

                <div class="content forms">
                    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
                        <ContentTemplate>
                            <div class="line padding-left50">
                                <label>Hotel</label>
                                <asp:DropDownList ID="ddlHotel" runat="server" AutoPostBack="true"
                                    onselectedindexchanged="ddlHotel_SelectedIndexChanged">
                                </asp:DropDownList>
                            </div>
                        </ContentTemplate>
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="ddlHotel" EventName="selectedindexchanged" />
                        </Triggers>
                    </asp:UpdatePanel>

                    <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                        <ContentTemplate>
                            <div class="line padding-left50">
                                <label>Room Category</label>
                                <asp:DropDownList ID="ddlCategory" runat="server">
                                </asp:DropDownList>
                            </div>
                        </ContentTemplate>
                        <Triggers>
                            <asp:AsyncPostBackTrigger ControlID="ddlHotel" EventName="selectedindexchanged" />
                        </Triggers>
                    </asp:UpdatePanel>
                    <div class="line padding-left50">
                        <label>Single Price</label>
                        <asp:TextBox ID="txtSingle" runat="server" class="medium"></asp:TextBox>
                    </div>
                    <div class="line padding-left50">
                        <label>Double Price</label>
                        <asp:TextBox ID="txtDouble" runat="server" class="medium"></asp:TextBox>
                    </div>
                    <div class="line padding-left50">
                        <label>Extra Bed Price</label>
                        <asp:TextBox ID="txtExtraBed" runat="server" class="medium"></asp:TextBox>
                    </div>
                    <div class="line padding-left50">
                        <label>Meal Plan</label>
                        <asp:TextBox ID="txtMealPlan" runat="server" class="medium"></asp:TextBox>
                    </div>
                    <div class="line padding-left50">
                        <label>Extra Meal Price</label>
                        <asp:TextBox ID="txtExtraMeal" runat="server" class="medium"></asp:TextBox>
                    </div>

                    <div class="line button" style="padding-left:325px">
                        <asp:Button ID="btnSubmit" runat="server" Text="Sumbit" CssClass="btn btn-2 btn-2d" onclick="btnSubmit_Click"></asp:Button>
                    </div>
                </div>
            </div>
        </div>
    </div>

    <script type="text/javascript" src="js/superfish.js"></script>
    <script type="text/javascript" src="js/supersubs.js"></script>
    <script type="text/javascript" src="js/hoverIntent.js"></script>
    <script type="text/javascript" src="js/jquery.flot.js"></script>
    <script type="text/javascript" src="js/jquery.graphtable-0.2.js"></script>
    <script type="text/javascript" src="js/jquery-ui.js"></script>
    <script type="text/javascript" src="js/customInput.jquery.js"></script>
    <script type="text/javascript" src="js/jquery.tablesorter.js"></script>
    <script type="text/javascript" src="js/jquery.tablesorter.pager.js"></script>
    <script type="text/javascript" src="js/jquery.sparkbox-select.js"></script>
    <script type="text/javascript" src="js/jquery.fancybox-1.3.4.js"></script>
    <script type="text/javascript" src="js/jquery.filestyle.mini.js"></script>
    <script type="text/javascript" src="js/date.js"></script>
    <script type="text/javascript" src="js/jquery.datepicker.js"></script>
    <script type="text/javascript" src="js/jquery.treeview.js"></script>
    <script type="text/javascript" src="js/jquery.tipsy.js"></script>
    <script type="text/javascript" src="js/jquery.wysiwyg.js"></script>
    <script type="text/javascript" src="js/plugins/wysiwyg.rmFormat.js"></script>
    <script type="text/javascript" src="js/controls/wysiwyg.image.js"></script>
    <script type="text/javascript" src="js/controls/wysiwyg.link.js"></script>
    <script type="text/javascript" src="js/controls/wysiwyg.table.js"></script>
    <script type="text/javascript" src="js/inline.js"></script>

</form>
</body>
</html>

and here is CS code

using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using BLL;

public partial class AddRoomPrice : System.Web.UI.Page
{
    clsbll bll = new clsbll();

    protected void Page_Load(object sender, EventArgs e)
    {
        if (Session["admin"] != null)
        {
            lblAdmin.Text = "Wel Come " + Session["admin"].ToString();
        }
        else
        {
            Response.Redirect("Login.aspx");
        }

        if (!Page.IsPostBack)
        {
            if (Session["hotelID"] != null)
            {
                ddlHotel.SelectedValue = Session["hotelID"].ToString();
            }
            ddlHotel.DataSource = bll.getHotel();
            ddlHotel.DataTextField = "HName";
            ddlHotel.DataValueField = "HotelID";
            ddlHotel.DataBind();
            ddlHotel.Items.Insert(0, "Select Hotel");
        }
    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        bll.insertRoomPrice(txtSingle.Text, txtDouble.Text, txtExtraBed.Text, txtMealPlan.Text, txtExtraMeal.Text, Convert.ToInt32(ddlCategory.SelectedValue), Convert.ToInt32(ddlHotel.SelectedValue));

        txtSingle.Text = "";
        txtDouble.Text = "";
        txtExtraBed.Text = "";
        txtMealPlan.Text = "";
        txtExtraMeal.Text = "";
        ddlCategory.SelectedIndex = 0;
        ddlHotel.SelectedIndex = 0;
        Session.Remove("hotelID");
        //Session.Remove("hotel");
    }
    protected void ddlHotel_SelectedIndexChanged(object sender, EventArgs e)
    {
        ddlCategory.DataSource = bll.getCategoryByID(ddlHotel.SelectedValue);
        ddlCategory.DataTextField = "RCategoryNameBed";
        ddlCategory.DataValueField = "RCategoryID";
        ddlCategory.DataBind();
        ddlCategory.Items.Insert(0, "Select Category");
    }

    protected void lnkLogout_Click(object sender, EventArgs e)
    {
        Session.Remove("admin");
        Response.Redirect("Login.aspx");
    }
}

So please reply as soon as possible

Thanks

Upvotes: 1

Views: 1920

Answers (3)

Perseus
Perseus

Reputation: 350

Maybe following code resolve the problem:

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        if (Session["admin"] == null)
            Response.Redirect("Login.aspx");
        else
        {
            lblAdmin.Text = "Welcome " + Session["admin"].ToString();

            ddlHotel.Items.Clear();
            ddlHotel.Items.Add(new ListItem("Select Hotel", ""));
            ddlHotel.AppendDataBoundItems = true;
            ddlHotel.DataSource = bll.getHotel();
            ddlHotel.DataTextField = "HName";
            ddlHotel.DataValueField = "HotelID";
            ddlHotel.DataBind();    

            if (Session["hotelID"] == null)
                ddlHotel.SelectedIndex = 0;
            else
                ddlHotel.SelectedValue = Session["hotelID"].ToString();

            ddlHotel_SelectedIndexChanged(null,null);
        }
    }
}

protected void ddlHotel_SelectedIndexChanged(object sender, EventArgs e)
{
    ddlCategory.Items.Clear();
    ddlCategory.Items.Add(new ListItem("Select Category", ""));
    ddlCategory.AppendDataBoundItems = true;
    ddlCategory.DataSource = bll.getCategoryByID(ddlHotel.SelectedValue);
    ddlCategory.DataTextField = "RCategoryNameBed";
    ddlCategory.DataValueField = "RCategoryID";
    ddlCategory.DataBind();
}

if not, I am so sorry, I can not help you more.

Upvotes: 0

Monika
Monika

Reputation: 2210

It is not you calling the page load function, that is the way ASP.NET works. The page posts to itself, thus calling the page_load function, when any Server controls on the page are fired (those which as set to postback).

What you need to do is to put some checks to differentiate between an initial page load and a post back

if(!IsPostBack) 
{  
//Code when initial loading 
}
 else 
{ 
// code when post back 
}

Upvotes: 1

Perseus
Perseus

Reputation: 350

UpdatePanel control has been designed to refresh only its content.

For filtering purpose you can choose one of these methods:

  • All related DropDownLists must be placed inside one UpdatePanel.

or

  • First UpdatePanel and its content must be nested in second UpdatePanel.(Not Recommended)

There is no need to declare AsyncPostBackTrigger in both methods.

Good luck.

Upvotes: 0

Related Questions