Answered by:
Cascading Dropdown Using Ajax and webservices

Question
-
User1173249824 posted
Hi Pls I av been working on cascading a dropdownlist with ajax but the issue is I have completely finished with my coding, passing parameters, but the isue is that when ever I run my Webservices, and I invoked my BindFolder and BindSubfolder, it tells me that value cannot be null. but the BindArchive is working properly
here is my code:
public class WebService : System.Web.Services.WebService { SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["dbConnectStrings"].ConnectionString); // Bind Archive [WebMethod] public CascadingDropDownNameValue[] BindArchive(string knownCategoryValues, string category) { DataSet ds = new DataSet(); conn.Open();//select * from [ST-Dep] SqlCommand cmd = new SqlCommand("select distinct empd.arc, empc.EmpCategoryId,empc.EmpCategoryName from Doc empd INNER JOIN EmpCategory empc On empd.arc = empc.EmpCategoryId", conn); SqlDataAdapter adp = new SqlDataAdapter(cmd); cmd.ExecuteNonQuery(); adp.Fill(ds); conn.Close(); List<CascadingDropDownNameValue> ArchiveDetails = new List<CascadingDropDownNameValue> (); foreach (DataRow Dr in ds.Tables[0].Rows) { string ArcID = Dr["arc"].ToString(); string ArcName = Dr["EmpCategoryName"].ToString(); ArchiveDetails.Add(new CascadingDropDownNameValue(ArcName, ArcID)); } return ArchiveDetails.ToArray(); } //Folder [WebMethod] public CascadingDropDownNameValue[] BindFolder(string knownCategoryValues, string category) { DataSet ds = new DataSet(); char ArcID; StringDictionary ArchiveDetails = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues); ArcID = Convert.ToChar(ArchiveDetails["arc"]); conn.Open();//SELECT * From [ST-Dep] where DepId=@DepId SqlCommand cmd = new SqlCommand("select distinct empd.folder,dep.DepId,dep.DepName From Doc empd INNER JOIN [ST-Dep] dep ON empd.folder = dep.DepId where empd.archive= @DepId ", conn); cmd.Parameters.AddWithValue("@DepId", ArcID); cmd.ExecuteNonQuery(); SqlDataAdapter adp = new SqlDataAdapter(cmd); adp.Fill(ds); conn.Close(); List<CascadingDropDownNameValue> FolderDetails = new List<CascadingDropDownNameValue> (); foreach (DataRow Dr in ds.Tables[0].Rows) { string FolderID = Dr["folder"].ToString(); string FolderName = Dr["DepName"].ToString(); FolderDetails.Add(new CascadingDropDownNameValue(FolderName, FolderID)); } return FolderDetails.ToArray(); } //SubFolder bind [WebMethod] public CascadingDropDownNameValue[] BinSubfolder(string knownCategoryValues, string category) { DataSet ds = new DataSet(); char FolderID; StringDictionary folderdetails = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues); FolderID = Convert.ToChar(folderdetails["DepName"]); conn.Open();//Select * From Doc where folder = @Folder SqlCommand cmd = new SqlCommand("select distinct empd.subfolder, trad.TradeId, trad.TradeName From Doc empd INNER JOIN [Trade] trad ON empd.subfolder = trad.TradeId where (empd.folder = @Folder)", conn); cmd.Parameters.AddWithValue("@Folder", FolderID); cmd.ExecuteNonQuery(); SqlDataAdapter adp = new SqlDataAdapter(cmd); adp.Fill(ds); conn.Close(); List<CascadingDropDownNameValue> SubFoldetails = new List<CascadingDropDownNameValue>(); foreach (DataRow dr in ds.Tables[0].Rows) { string SubFolID = dr["subfolder"].ToString(); string subFolName = dr["TradeName"].ToString();
SubFoldetails.Add(new CascadingDropDownNameValue(subFolName, SubFolID)); } return SubFoldetails.ToArray(); } }
and Here is my Category in my CASCADINGDROPDOWN<asp:CascadingDropDown ID="ccarchive" runat="server" Category="arc" TargetControlID="ddarchive" LoadingText="Loading Archives.." PromptText="Select Archive" ServiceMethod="BindArchive" ServicePath="~/WebService.asmx" /> <asp:CascadingDropDown ID="ccFolder" runat="server" Category="DepId" TargetControlID="ddFolder" ParentControlID="ddarchive" LoadingText="Loading Folders.." PromptText="Select Folder" ServiceMethod="BindFolder" ServicePath="~/WebService.asmx" /> <asp:CascadingDropDown ID="ccSubfolder" runat="server" Category ="TradeId" TargetControlID ="ddSubfolder" ParentControlID ="ddFolder" LoadingText="Loading SubFolders" PromptText ="Select SubFolder" ServiceMethod="BindSubfolder" ServicePath="~/WebService.asmx"/>
Ps can som1 elp me out with what might av been causing it to retun a null value
Thanks
Tuesday, April 21, 2015 5:58 AM
Answers
-
User1970566204 posted
1 .WebService1.asmx
using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Web.Services; using AjaxControlToolkit; namespace WebApplication8 { [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] [System.Web.Script.Services.ScriptService] public class WebService1 : WebService { private SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString); [WebMethod] public CascadingDropDownNameValue[] BindArchive(string knownCategoryValues, string category) { DataSet ds = new DataSet(); conn.Open(); //select * from [ST-Dep] SqlCommand cmd = new SqlCommand("SELECT CategoryID as arc ,CategoryName as EmpCategoryName FROM Categories", conn); SqlDataAdapter adp = new SqlDataAdapter(cmd); cmd.ExecuteNonQuery(); adp.Fill(ds); conn.Close(); List<CascadingDropDownNameValue> ArchiveDetails = new List<CascadingDropDownNameValue>(); foreach (DataRow Dr in ds.Tables[0].Rows) { string ArcID = Dr["arc"].ToString(); string ArcName = Dr["EmpCategoryName"].ToString(); ArchiveDetails.Add(new CascadingDropDownNameValue(ArcName, ArcID)); } return ArchiveDetails.ToArray(); } [WebMethod] public CascadingDropDownNameValue[] BindFolder(string knownCategoryValues, string category) { DataSet ds = new DataSet(); string ArcID; //char ArcID; //only for my purpose StringDictionary ArchiveDetails = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues); // ArcID = Convert.ToChar(ArchiveDetails["arc"]); //only for my purpose ArcID = Convert.ToString(ArchiveDetails["arc"]); conn.Open(); //SELECT * From [ST-Dep] where DepId=@DepId SqlCommand cmd = new SqlCommand("SELECT SupplierID as folder ,ProductName as DepName FROM Products where CategoryID=@DepId", conn); cmd.Parameters.AddWithValue("@DepId", ArcID); cmd.ExecuteNonQuery(); SqlDataAdapter adp = new SqlDataAdapter(cmd); adp.Fill(ds); conn.Close(); List<CascadingDropDownNameValue> FolderDetails = new List<CascadingDropDownNameValue>(); foreach (DataRow Dr in ds.Tables[0].Rows) { string FolderID = Dr["folder"].ToString(); string FolderName = Dr["DepName"].ToString(); FolderDetails.Add(new CascadingDropDownNameValue(FolderName, FolderID)); } return FolderDetails.ToArray(); } //SubFolder bind [WebMethod] /*BinSubfolder*/ public CascadingDropDownNameValue[] BindSubfolder(string knownCategoryValues, string category) { DataSet ds = new DataSet(); string FolderID; //char FolderID; //only for my purpose StringDictionary folderdetails = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues); //FolderID = Convert.ToChar(folderdetails["DepId"]); //only for my purpose FolderID = Convert.ToString(folderdetails["DepId"]); conn.Open(); //Select * From Doc where folder = @Folder SqlCommand cmd = new SqlCommand("SELECT SupplierID as subfolder,CompanyName as TradeName FROM Suppliers where SupplierID=@Folder ", conn); cmd.Parameters.AddWithValue("@Folder", FolderID); cmd.ExecuteNonQuery(); SqlDataAdapter adp = new SqlDataAdapter(cmd); adp.Fill(ds); conn.Close(); List<CascadingDropDownNameValue> SubFoldetails = new List<CascadingDropDownNameValue>(); foreach (DataRow dr in ds.Tables[0].Rows) { string SubFolID = dr["subfolder"].ToString(); string subFolName = dr["TradeName"].ToString(); SubFoldetails.Add(new CascadingDropDownNameValue(subFolName, SubFolID)); } return SubFoldetails.ToArray(); } } }
2.webform1.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication8.WebForm1" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>MyDemo-CascadingDropDown for asp.net</title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <div> Category : <asp:DropDownList ID="ddarchive" runat="server"></asp:DropDownList> <asp:CascadingDropDown ID="ccarchive" runat="server" Category="arc" TargetControlID="ddarchive" LoadingText="Loading Archives.." PromptText="Select Archive" ServiceMethod="BindArchive" ServicePath="WebService1.asmx" /> <br /> Products : <asp:DropDownList ID="ddFolder" runat="server"></asp:DropDownList> <asp:CascadingDropDown ID="ccFolder" runat="server" Category="DepId" TargetControlID="ddFolder" ParentControlID="ddarchive" LoadingText="Loading Folders.." PromptText="Select Folder" ServiceMethod="BindFolder" ServicePath="WebService1.asmx" /> <br /> Supplier : <asp:DropDownList ID="ddSubfolder" runat="server"></asp:DropDownList> <asp:CascadingDropDown ID="ccSubfolder" runat="server" Category="TradeId" TargetControlID="ddSubfolder" ParentControlID="ddFolder" LoadingText="Loading SubFolders" PromptText="Select SubFolder" ServiceMethod="BindSubfolder" ServicePath="WebService1.asmx" /> </div> </form> </body> </html>
- Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
Tuesday, April 21, 2015 10:41 AM
All replies
-
User1970566204 posted
alamdreal1
//SubFolder bind [WebMethod] public CascadingDropDownNameValue[] BinSubfolder(string knownCategoryValues, string category) { DataSet ds = new DataSet(); char FolderID; StringDictionary folderdetails = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues); /***** FolderID = Convert.ToChar(folderdetails["DepName"]); *******/
FolderID = Convert.ToChar(folderdetails["DepId"]);
Tuesday, April 21, 2015 7:27 AM -
User1173249824 posted
asyed4u
FolderID = Convert.ToChar(folderdetails["DepId"]);Its Still give thesame error value cannot be null @ FolderID = Convert.ToChar(folderdetails["DepId"]);
what might be the cause pls
Thanks
Tuesday, April 21, 2015 9:19 AM -
User1970566204 posted
Hi,
when i worked your code , [ i connect with northwind]
its produce two error,
1) closing class blcok
2) method name mismatch
ServiceMethod="BindSubfolder"
but in Servicee ........ BinSubFolder()
After these two fix, you code works fine,
Try like above , otherwise i will post entire my working sample
Tuesday, April 21, 2015 10:28 AM -
User1970566204 posted
1 .WebService1.asmx
using System; using System.Collections.Generic; using System.Collections.Specialized; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Web.Services; using AjaxControlToolkit; namespace WebApplication8 { [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] [System.Web.Script.Services.ScriptService] public class WebService1 : WebService { private SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["NorthwindConnectionString"].ConnectionString); [WebMethod] public CascadingDropDownNameValue[] BindArchive(string knownCategoryValues, string category) { DataSet ds = new DataSet(); conn.Open(); //select * from [ST-Dep] SqlCommand cmd = new SqlCommand("SELECT CategoryID as arc ,CategoryName as EmpCategoryName FROM Categories", conn); SqlDataAdapter adp = new SqlDataAdapter(cmd); cmd.ExecuteNonQuery(); adp.Fill(ds); conn.Close(); List<CascadingDropDownNameValue> ArchiveDetails = new List<CascadingDropDownNameValue>(); foreach (DataRow Dr in ds.Tables[0].Rows) { string ArcID = Dr["arc"].ToString(); string ArcName = Dr["EmpCategoryName"].ToString(); ArchiveDetails.Add(new CascadingDropDownNameValue(ArcName, ArcID)); } return ArchiveDetails.ToArray(); } [WebMethod] public CascadingDropDownNameValue[] BindFolder(string knownCategoryValues, string category) { DataSet ds = new DataSet(); string ArcID; //char ArcID; //only for my purpose StringDictionary ArchiveDetails = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues); // ArcID = Convert.ToChar(ArchiveDetails["arc"]); //only for my purpose ArcID = Convert.ToString(ArchiveDetails["arc"]); conn.Open(); //SELECT * From [ST-Dep] where DepId=@DepId SqlCommand cmd = new SqlCommand("SELECT SupplierID as folder ,ProductName as DepName FROM Products where CategoryID=@DepId", conn); cmd.Parameters.AddWithValue("@DepId", ArcID); cmd.ExecuteNonQuery(); SqlDataAdapter adp = new SqlDataAdapter(cmd); adp.Fill(ds); conn.Close(); List<CascadingDropDownNameValue> FolderDetails = new List<CascadingDropDownNameValue>(); foreach (DataRow Dr in ds.Tables[0].Rows) { string FolderID = Dr["folder"].ToString(); string FolderName = Dr["DepName"].ToString(); FolderDetails.Add(new CascadingDropDownNameValue(FolderName, FolderID)); } return FolderDetails.ToArray(); } //SubFolder bind [WebMethod] /*BinSubfolder*/ public CascadingDropDownNameValue[] BindSubfolder(string knownCategoryValues, string category) { DataSet ds = new DataSet(); string FolderID; //char FolderID; //only for my purpose StringDictionary folderdetails = AjaxControlToolkit.CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues); //FolderID = Convert.ToChar(folderdetails["DepId"]); //only for my purpose FolderID = Convert.ToString(folderdetails["DepId"]); conn.Open(); //Select * From Doc where folder = @Folder SqlCommand cmd = new SqlCommand("SELECT SupplierID as subfolder,CompanyName as TradeName FROM Suppliers where SupplierID=@Folder ", conn); cmd.Parameters.AddWithValue("@Folder", FolderID); cmd.ExecuteNonQuery(); SqlDataAdapter adp = new SqlDataAdapter(cmd); adp.Fill(ds); conn.Close(); List<CascadingDropDownNameValue> SubFoldetails = new List<CascadingDropDownNameValue>(); foreach (DataRow dr in ds.Tables[0].Rows) { string SubFolID = dr["subfolder"].ToString(); string subFolName = dr["TradeName"].ToString(); SubFoldetails.Add(new CascadingDropDownNameValue(subFolName, SubFolID)); } return SubFoldetails.ToArray(); } } }
2.webform1.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication8.WebForm1" %> <%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title>MyDemo-CascadingDropDown for asp.net</title> </head> <body> <form id="form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"></asp:ScriptManager> <div> Category : <asp:DropDownList ID="ddarchive" runat="server"></asp:DropDownList> <asp:CascadingDropDown ID="ccarchive" runat="server" Category="arc" TargetControlID="ddarchive" LoadingText="Loading Archives.." PromptText="Select Archive" ServiceMethod="BindArchive" ServicePath="WebService1.asmx" /> <br /> Products : <asp:DropDownList ID="ddFolder" runat="server"></asp:DropDownList> <asp:CascadingDropDown ID="ccFolder" runat="server" Category="DepId" TargetControlID="ddFolder" ParentControlID="ddarchive" LoadingText="Loading Folders.." PromptText="Select Folder" ServiceMethod="BindFolder" ServicePath="WebService1.asmx" /> <br /> Supplier : <asp:DropDownList ID="ddSubfolder" runat="server"></asp:DropDownList> <asp:CascadingDropDown ID="ccSubfolder" runat="server" Category="TradeId" TargetControlID="ddSubfolder" ParentControlID="ddFolder" LoadingText="Loading SubFolders" PromptText="Select SubFolder" ServiceMethod="BindSubfolder" ServicePath="WebService1.asmx" /> </div> </form> </body> </html>
- Marked as answer by Anonymous Thursday, October 7, 2021 12:00 AM
Tuesday, April 21, 2015 10:41 AM