Solved

Need help on ObjectDataSource control...

Posted on 2009-06-29
1
218 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
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

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction Hi all and welcome to my first article on Experts Exchange. A while ago, someone asked me if i could do some tutorials on object oriented programming. I decided to do them on C#. Now you may ask me, why's that? Well, one of the re…
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…
Suggested Courses

739 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