2

Greetings, I have a problem to use selected value propriety of CascadingDropDown.

I have 3 asp dropdown controls with ajax CascadingDropDown for each one of them.

I have no problem to bind data to the 3 CascadingDropDown but my problem is to rebind CascadingDropDown.

simply what I want to do is to select a record from Gridview which has the selected values for the CascadingDropDown that I want to pass then rebind the CascadingDropDown with selected value.

I'm posting my code down which include:

1-ASP.NET code.

2-Code behind to handle selected record from grid view.

3- web servisice that handle binding data to the 3 CascadingDropDown.

please advice how to rebind data to CascadingDropDown with selected value.

by the way I used selected value proprety as showning in my code but it is not working and there is no error.

Thank you,

........................ ASP.NET code ........................

 <%@ Page Title="" Language="C#" MasterPageFile="~/Master.Master" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="IMAM_APPLICATION.WebForm1" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="cc1" %>

<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        DataKeyNames="idcontact_info" DataSourceID="ObjectDataSource1" 
        onselectedindexchanged="GridView1_SelectedIndexChanged">
        <Columns>
            <asp:CommandField ShowSelectButton="True" />
            <asp:BoundField DataField="idcontact_info" HeaderText="idcontact_info" 
                InsertVisible="False" ReadOnly="True" SortExpression="idcontact_info" />
            <asp:BoundField DataField="Work_Field" HeaderText="Work_Field" 
                SortExpression="Work_Field" />
            <asp:BoundField DataField="Occupation" HeaderText="Occupation" 
                SortExpression="Occupation" />
            <asp:BoundField DataField="sub_Occupation" HeaderText="sub_Occupation" 
                SortExpression="sub_Occupation" />

        </Columns>
    </asp:GridView>
    <asp:Label ID="lbl" runat="server" Text="Label"></asp:Label>
    <asp:ObjectDataSource ID="ObjectDataSource1" runat="server" 
        DeleteMethod="Delete" InsertMethod="Insert" 
        OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" 
        TypeName="IMAM_APPLICATION.DSContactTableAdapters.contact_infoTableAdapter" 
        UpdateMethod="Update">
        <DeleteParameters>
            <asp:Parameter Name="Original_idcontact_info" Type="Int32" />
        </DeleteParameters>
        <UpdateParameters>

            <asp:Parameter Name="Work_Field" Type="String" />
            <asp:Parameter Name="Occupation" Type="String" />
            <asp:Parameter Name="sub_Occupation" Type="String" />

            <asp:Parameter Name="Original_idcontact_info" Type="Int32" />
        </UpdateParameters>
        <InsertParameters>
            <asp:Parameter Name="Work_Field" Type="String" />
            <asp:Parameter Name="Occupation" Type="String" />
            <asp:Parameter Name="sub_Occupation" Type="String" />
        </InsertParameters>
    </asp:ObjectDataSource>

  <asp:DropDownList ID="cmbWorkField" runat="server" Style="top: 715px; left: 180px;
                    position: absolute; height: 22px; width: 126px">


                </asp:DropDownList>

                <asp:DropDownList runat="server" ID="cmbOccupation" Style="top: 745px; left: 180px;
                    position: absolute; height: 22px; width: 77px">

                </asp:DropDownList>
                <asp:DropDownList ID="cmbSubOccup" runat="server" 
                    style="position:absolute; top: 775px; left: 180px;">

                </asp:DropDownList>

                <cc1:CascadingDropDown ID="cmbWorkField_CascadingDropDown" runat="server" 
                    TargetControlID="cmbWorkField" 
                    Category="WorkField"  
                    LoadingText="Please Wait ..." 
                    PromptText="Select Wor kField ..." 
                    ServiceMethod="GetWorkField" 
                    ServicePath="ServiceTags.asmx">
                </cc1:CascadingDropDown>

                <cc1:CascadingDropDown ID="cmbOccupation_CascadingDropDown" runat="server" 

                    TargetControlID="cmbOccupation"
                     Category="Occup" 
                    LoadingText="Please wait..." 
                    PromptText="Select Occup ..." 
                    ServiceMethod="GetOccup" 
                    ServicePath="ServiceTags.asmx" 
                    ParentControlID="cmbWorkField">
                </cc1:CascadingDropDown>
                <cc1:CascadingDropDown ID="cmbSubOccup_CascadingDropDown" runat="server" 
                    Category="SubOccup" 
                    Enabled="True"
                     LoadingText="Please Wait..." 
                    ParentControlID="cmbOccupation" 
                    PromptText="Select Sub Occup" 
                    ServiceMethod="GetSubOccup" 
                    ServicePath="ServiceTags.asmx" 
                    TargetControlID="cmbSubOccup">
                </cc1:CascadingDropDown>


</asp:Content>
......................................................
C#  code behind
......................................................

   protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
        {
             string strg = GridView1.SelectedDataKey["idcontact_info"].ToString();
            int index = Convert.ToInt32(GridView1.SelectedDataKey["idcontact_info"].ToString());
            //txtSearch.Text = GridView1.SelectedIndex.ToString();
           // txtSearch.Text = GridView1.SelectedDataKey["idcontact_info"].ToString();

            DSContactTableAdapters.contact_infoTableAdapter GetByIDAdapter = new DSContactTableAdapters.contact_infoTableAdapter();


            DSContact.contact_infoDataTable ByID = GetByIDAdapter.GetDataByID(index);
            //DSSearch.contact_infoDataTable FirstName = FirstNameAdapter.GetDataByFirstNameList(prefixText);
            foreach (DataRow dr in ByID.Rows)
            {
                lbl.Text = dr["Work_Field"].ToString() + "....." + dr["Occupation"].ToString() + "....." + dr["sub_Occupation"].ToString();


            cmbWorkField_CascadingDropDown.SelectedValue = dr["Work_Field"].ToString();
            cmbOccupation_CascadingDropDown.SelectedValue = dr["Occupation"].ToString();
            cmbSubOccup_CascadingDropDown.SelectedValue = dr["sub_Occupation"].ToString();


            }
        }
.......................................................
web Service 
.......................................................
 [WebMethod]
        public CascadingDropDownNameValue[] GetWorkField(string knownCategoryValues, string category)
    {

        //dsCarsTableAdapters.CarsTableAdapter makeAdapter = new dsCarsTableAdapters.CarsTableAdapter();
        //dsCars.CarsDataTable makes = makeAdapter.GetAllCars();
        DSContactTableAdapters.tag_work_fieldTableAdapter GetWorkFieldAdapter = new DSContactTableAdapters.tag_work_fieldTableAdapter();
        DSContact.tag_work_fieldDataTable WorkFields = GetWorkFieldAdapter.GetDataByGetWorkField();
        List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
        foreach (DataRow dr in WorkFields)
        {
            string Work_Field = (string)dr["work_Field_name"];
            int idtag_work_field = (int)dr["idtag_work_field"];
            values.Add(new CascadingDropDownNameValue(Work_Field, idtag_work_field.ToString()));
        }
        return values.ToArray();
    }

    [WebMethod]
    public CascadingDropDownNameValue[] GetOccup(string knownCategoryValues, string category)
    {
        StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
        int idtag_work_field;
        if (!kv.ContainsKey("WorkField") || !Int32.TryParse(kv["WorkField"], out idtag_work_field))
        {
            return null;
        }
        //dsCarModelsTableAdapters.CarModelsTableAdapter modelAdapter = new dsCarModelsTableAdapters.CarModelsTableAdapter();
        //dsCarModels.CarModelsDataTable models = modelAdapter.GetModelsByCarId(makeId);
        DSContactTableAdapters.tag_OccupTableAdapter GetOccupAdapter = new DSContactTableAdapters.tag_OccupTableAdapter();
        DSContact.tag_OccupDataTable Occups = GetOccupAdapter.GetByOccup_ID(idtag_work_field);
        //           
        List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
        foreach (DataRow dr in Occups)
        {
            values.Add(new CascadingDropDownNameValue((string)dr["Occup_Name"], dr["idtag_Occup"].ToString()));
        }
        return values.ToArray();
    }

    [WebMethod]
    public CascadingDropDownNameValue[] GetSubOccup(string knownCategoryValues, string category)
    {
        StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
        int idtag_Occup;
        if (!kv.ContainsKey("Occup") || !Int32.TryParse(kv["Occup"], out idtag_Occup))
        {
            return null;
        }

        //dsModelColorsTableAdapters.ModelColorsTableAdapter adapter = new dsModelColorsTableAdapters.ModelColorsTableAdapter();
        //dsModelColors.ModelColorsDataTable colors = adapter.GetColorsByModelId(colorId);

        DSContactTableAdapters.tag_Sub_OccupTableAdapter GetSubOccupAdapter = new DSContactTableAdapters.tag_Sub_OccupTableAdapter();
        DSContact.tag_Sub_OccupDataTable SubOccups = GetSubOccupAdapter.GetDataBy_Sub_Occup_ID(idtag_Occup);
        List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
        foreach (DataRow dr in SubOccups)
        {
            values.Add(new CascadingDropDownNameValue((string)dr["Sub_Occup_Name"], dr["idtag_Sub_Occup"].ToString()));
        }
        return values.ToArray();
    }

UPDATE:

my master page
...................................
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Master.master.cs" Inherits="IMAM_APPLICATION.Master" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>

<!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" >
<head runat="server">
    <title></title>

</head>
<body>
    <form id="form1" runat="server">
    <div>
        <%--<asp:ScriptManager ID="ScriptManager1" runat="server" />--%>
        <asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
        </asp:ToolkitScriptManager>


    </div>
     <div>

        <table class="style1" frame="vSides">
            <tr>
                <td class="style17" bgcolor="#FFFF99">
                </td>
                <td class="style18" style="">
                    <img alt="" src="Images/banner1.gif" 
                        style="width: 950px; height: 89px; margin-bottom: 0px;" /></td>
                <td class="style17" bgcolor="#FFFF99">
                </td>
            </tr>
            <tr>
                <td class="style15">
                </td>
                <td class="style16" bgcolor="#FFFF99">
                    <asp:Menu ID="Menu1" runat="server" Width="44px" Orientation="Horizontal" 
                        DataSourceID="SiteMapDataSource1" BackColor="#FFFBD6" 
                        DynamicHorizontalOffset="2" Font-Names="Verdana" Font-Size="0.8em" 
                        ForeColor="#990000" StaticDisplayLevels="2" StaticSubMenuIndent="10px">
                        <StaticMenuStyle BorderStyle="Dotted" />
                        <StaticSelectedStyle BackColor="#FFCC66" />
                        <StaticMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
                        <DynamicHoverStyle BackColor="#990000" ForeColor="White" />
                        <DynamicMenuStyle BackColor="#FFFBD6" />
                        <DynamicItemTemplate>
                            <%# Eval("Text") %>
                        </DynamicItemTemplate>
                        <DynamicSelectedStyle BackColor="#FFCC66" />
                        <DynamicMenuItemStyle HorizontalPadding="5px" VerticalPadding="2px" />
                        <StaticHoverStyle BackColor="#990000" ForeColor="White" />
                        <StaticItemTemplate>
                        <%# Eval("Text") %>
                        </StaticItemTemplate>
                    </asp:Menu>

                </td>
                <td class="style15">
                </td>
            </tr>
            <tr>
                <td class="style19" bgcolor="#FFFF99">
                </td>
                <td class="style20">
                    <asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">



                    </asp:ContentPlaceHolder>

                </td>
                <td class="style19" bgcolor="#FFFF99">
                </td>
            </tr>
            <tr>
                <td class="style7">
                </td>
                <td class="style8" style="" bgcolor="#FFFF99">


                    Copyright&nbsp; Imam Mahdi Association of Marjeya</td>
                <td class="style7">
                </td>
            </tr>
        </table>

    </div>
     <asp:SiteMapDataSource ID="SiteMapDataSource1" runat="server" />

    </form>
</body>
</html>
Haacked
  • 58,045
  • 14
  • 90
  • 114
Eyla
  • 5,751
  • 20
  • 71
  • 116
  • Can you post your master.master page code and Page_Load event of master page and WebForm1 page? – IsmailS May 13 '10 at 13:33
  • @Ismail I posted my Master page code and Page_Load event for both has nothing inside. Thank you – Eyla May 15 '10 at 05:03
  • Is this a navigation issue when you've going back tot he page and your drop down controls aren't set to what they were when you left, and the grid view doesn't have the right values? – ICodeForCoffee May 15 '10 at 05:08
  • @ICodeForCoffee this is retrieving problem. I want to have selected value set accroding to what is in the database when i select a record from the gridview. – Eyla May 15 '10 at 13:24

4 Answers4

4

Simple; set the SelectedValue property of CascadingDropDown control, instead of DropDown control. It's working for me.

Eg. CascadingDropDown1.SelectedValue = "KY"

Nightfirecat
  • 11,432
  • 6
  • 35
  • 51
Yuva
  • 56
  • 2
1

I have the same problem. As a workaround, I just used the PromptText property to bind to the value in the database. Hope it helps!

1
CascadingDropDown box2 = (CascadingDropDown)GridView1.Rows[rowIndex].Cells[2].FindControl("CascadingDropDown1");
CascadingDropDown box3 = (CascadingDropDown)GridView1.Rows[rowIndex].Cells[3].FindControl("CascadingDropDown2");

Try this code for cascading dropdown inside GridView...

highlycaffeinated
  • 19,729
  • 9
  • 60
  • 91
Naresh
  • 11
  • 1
0

I think that I will look for alternative solution which will bind the data to labels and if I want to update the value I will use CascadingDropDown.

Eyla
  • 5,751
  • 20
  • 71
  • 116