Solved

Need help on ObjectDataSource control...

Posted on 2009-06-29
1
212 Views
Last Modified: 2012-05-07
Hi,
Is there a way to programmatically call the ObjectDataSource control based on certain selection made in a dropdownlist? Please see code below. When the option with value "kickass" is selected from dropdownlist "ddlMovieCategory", I want to display another dropdownlist for user to select.  All other options will just call the ObjectDataSource (id="srcMovies").  Please provide sample code.

Thanks very much in advance!

Web Form Code:

    <form id="form1" runat="server">

	<div>

    Please select a movie category: 

    <asp:DropDownList 

    ID="ddlMovieCategory" 

    DataTextField="Name" 

    DataValueField="Id" 

    AutoPostBack="true" 

    OnSelectedIndexChanged="ddlMovieCategory_SelectedIndexChanged"

    Runat="server" /> 

 

    <asp:DataList 

        ID="dlMovies" CssClass="dataView" 

        DataSourceID="srcMovies"

        Runat="server">

        <ItemTemplate>

        <h4><%#Eval("MovieTitle")%></h4>

        <%#Eval("MovieDesc")%><br />

		<%#Eval("MoveRating")%>

        </ItemTemplate>

    </asp:DataList>        

        

    <asp:ObjectDataSource

        id="srcMovies"

        TypeName="MovieCategories"

        SelectMethod="GetMovies"

        Runat="server">

        <SelectParameters>

        <asp:ControlParameter

            Name="CategoryId"

            ControlID="ddlMovieCategory" />

       </SelectParameters>

    </asp:ObjectDataSource>

    </div>

    </form>

 

Code-Behind:

    protected void Page_Load(object sender, EventArgs e)

    {

        if (!IsPostBack)

        {

            // Call to the function to populate dropdownlist from xml

            PopulateDDLFromXMLFile();

        }

    }

	

    // Populates the dropdownlist from xml file

    private void PopulateDDLFromXMLFile()

    {

        DataSet ds = new DataSet();

        ds.ReadXml(MapPath("MovieCategories.xml"));

 

        // Get the dataview of table "Category", which is default table name

        DataView dv = ds.Tables["Category"].DefaultView;

        // Or we can use:

        // DataView dv = ds.Tables[0].DefaultView;

 

        // Now sort the DataView vy column name "Name"

        dv.Sort = "Name";

 

        // Now define datatext field and datavalue field of dropdownlist

        ddlMovieCategory.DataTextField = "Name";

        ddlMovieCategory.DataValueField = "ID";

 

        // Now bind the dropdownlist to the dataview

        ddlMovieCategory.DataSource = dv;

        ddlMovieCategory.DataBind();

    }

    protected void ddlMovieCategory_SelectedIndexChanged(object sender, EventArgs e)

    {

        //do something here

    }

 

XML File That Populates Dropdown:

<?xml version="1.0" encoding="utf-8" ?>

<Categories>

  <Category>

    <ID></ID>

    <Name></Name>

  </Category>

  <Category>

    <ID>love</ID>

    <Name>Romance</Name>

  </Category>  

  <Category>

    <ID>kickass</ID>

    <Name>Action</Name>

  </Category>

  <Category>

    <ID>adventure</ID>

    <Name>Adventure</Name>

  </Category>

  <Category>

    <ID>drama</ID>

    <Name>Drama</Name>

  </Category>

  <Category>

    <ID>horror</ID>

    <Name>Horror</Name>

  </Category>

  <Category>

    <ID>scary</ID>

    <Name>Thriller</Name>

  </Category>

</Categories>

Open in new window

0
Comment
Question by:WebAppDeveloper
1 Comment
 
LVL 29

Accepted Solution

by:
David H.H.Lee earned 500 total points
ID: 24742779
Hi WebAppDeveloper,
>>..programmatically call the ObjectDataSource control based on certain selection made in a dropdownlist
You can call ObjectDataSource's onselected event to handle the required condition as needed.
eg:
Check the details here:
http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.objectdatasource.selected.aspx

<asp:ObjectDataSource
        id="srcMovies"
       OnSelected="ObjectDataSource1_Selected"
    ....>

public void ObjectDataSource1_Selected(object source, ObjectDataSourceStatusEventArgs e)
{
    if (e.ReturnValue != null)
    {
        //continue your logic here, probably re-bind a resource to another dropdownlist based on selected...
    }
}
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

Introduction Although it is an old technology, serial ports are still being used by many hardware manufacturers. If you develop applications in C#, Microsoft .NET framework has SerialPort class to communicate with the serial ports.  I needed to…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
This demo shows you how to set up the containerized NetScaler CPX with NetScaler Management and Analytics System in a non-routable Mesos/Marathon environment for use with Micro-Services applications.
This video explains how to create simple products associated to Magento configurable product and offers fast way of their generation with Store Manager for Magento tool.

760 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

23 Experts available now in Live!

Get 1:1 Help Now