I recently joined new company that they are using old asp.net in VS2008. It is quite old. One of the problem i had during modification that they are using Ajaxtoolkit3.0 cascadingdropdown. Dropdown (ajaxtoolkit) works on IE perfectly but not in other browser. First time, I have to add through IE then it allows other browser to select dropdown.
error in chrome. exp head group is empty it should show data
error in chrome. exp head group is empty it should show data. please see above picture.
At the sametime. please see what IE shows.
IE shows perfectly result
IE is showing perfectly result.
First user select from this dropdown
<asp:DropDownList runat="Server" CssClass="frmTextBox" ID="ddlBudgetExpenseHead" Width="600px" />
and then this appear
<asp:DropDownList runat="Server" CssClass="frmTextBox"
ID="ddlBudgetExpenseHeadDetail" Width="400px" AutoPostBack="True"
onselectedindexchanged="ddlBudgetExpenseHeadDetail_SelectedIndexChanged" />
<ajaxToolkit:CascadingDropDown ID="ddlBudgetExpenseHeadDetail_CascadingDropDown" Category="BudgetExpenseHead"
ServicePath="~/WebService/wbsBudgetReferenceHead.asmx" ServiceMethod="GetBudgetReferenceHeadDetailListByBudgetExpenseHeadID"
runat="server" Enabled="True" ParentControlID="ddlBudgetExpenseHead" TargetControlID="ddlBudgetExpenseHeadDetail"
PromptText="All Budget Expense Head Groups(s)" LoadingText="[Loading Budget Expense Head Groups(s)]"
SelectedValue="" />
pageload
if (!Page.IsPostBack)
{
GetValuesFromSession();
LoadProjectSiteLocation();
LoadBudgetReferenceHead();
LoadRequirmentTypes();
LoadUnitOfMeasurementForDuration();
if (ViewState["IndentID"] != null)
{
LoadIndentInformation();
LoadQuerySendTo();
}
protected void LoadBudgetReferenceHead()
{
SMART.DAL.BMS.BudgetExpenseHead objBudgetExpenseHead = new SMART.DAL.BMS.BudgetExpenseHead();
ddlBudgetExpenseHead.DataSource = objBudgetExpenseHead.SelectByProjectID(Convert.ToInt32(ViewState["ProjectID"]));
ddlBudgetExpenseHead.DataTextField = "BudgetExpenseHeadDescription";
ddlBudgetExpenseHead.DataValueField = "BudgetExpenseHeadID";
ddlBudgetExpenseHead.DataBind();
}
protected void ddlBudgetExpenseHeadDetail_SelectedIndexChanged(object sender, EventArgs e)
{
SMART.DAL.BMS.BudgetExpenseHeadDetail objBudgetExpenseHeadDetail = new SMART.DAL.BMS.BudgetExpenseHeadDetail();
DataTable dtBudgetExpenseHeadDetail;
if (ddlBudgetExpenseHeadDetail.SelectedItem.Value == "")
{
dtBudgetExpenseHeadDetail = objBudgetExpenseHeadDetail.SelectByID(-1);
}
else
{
dtBudgetExpenseHeadDetail = objBudgetExpenseHeadDetail.SelectByID(Convert.ToInt32(ddlBudgetExpenseHeadDetail.SelectedItem.Value));
}
if (dtBudgetExpenseHeadDetail.Rows.Count > 0)
{
if (dtBudgetExpenseHeadDetail.Rows[0]["UnitofMeasurementDescription"].ToString() != "")
{
txtBudgetUnitofMeasurement.Text = dtBudgetExpenseHeadDetail.Rows[0]["UnitofMeasurementDescription"].ToString();
//ViewState["BudgetUnitofMeasurementDescription"] = dtBudgetExpenseHeadDetail.Rows[0]["UnitofMeasurementDescription"].ToString();
if (txtIndentDetailItemUOM.Text == txtBudgetUnitofMeasurement.Text)
{
txtBudgetUnitofMeasurement.Visible = false;
lblBudgetUnitofMeasurement.Visible = false;
txtConversionFector.Text = "1";
txtConversionFector.Visible = false;
}
else
{
txtBudgetUnitofMeasurement.Visible = true;
lblBudgetUnitofMeasurement.Visible = true;
txtConversionFector.Text = "1";
txtConversionFector.Visible = true;
}
//lblBudgetUnitofMeasurement.Visible = true;
//txtBudgetUnitofMeasurement.Visible = true;
}
else
{
txtBudgetUnitofMeasurement.Text = "";
txtConversionFector.Text = "0";
txtConversionFector.Visible = false;
lblBudgetUnitofMeasurement.Visible = false;
txtBudgetUnitofMeasurement.Visible = false;
}
}
}
Webservice method
[WebMethod]
public CascadingDropDownNameValue[] GetBudgetReferenceHeadDetailListByBudgetExpenseHeadID(string knownCategoryValues, string category)
{
SMART.DAL.BMS.BudgetExpenseHeadDetail objBudgetExpenseHeadDetail = new SMART.DAL.BMS.BudgetExpenseHeadDetail();
StringDictionary kv = CascadingDropDown.ParseKnownCategoryValuesString(knownCategoryValues);
Int32 BudgetExpenseHeadID;
if (!kv.ContainsKey("undefined") ||
!Int32.TryParse(kv["undefined"], out BudgetExpenseHeadID))
{
return null;
}
DataTable dt = objBudgetExpenseHeadDetail.SelectByBudgetExpenseHeadID(BudgetExpenseHeadID);
//kv["Project"].ToString()
List<CascadingDropDownNameValue> values = new List<CascadingDropDownNameValue>();
int i = 0;
foreach (DataRow dr in dt.Rows)
{
string BudgetReferenceID = dr["BudgetExpenseHeadDetailID"].ToString();
string BudgetReferenceDescription = dr["BudgetExpenseHeadDetailDescription"].ToString();
values.Add(new CascadingDropDownNameValue(BudgetReferenceDescription, BudgetReferenceID));
}
return values.ToArray();
}
Can you help me what should i do so it will work everytime in all browser? I think i should upgrade ajaxtoolkit so it will solve the problem.
I tried to add some parameter autopostback in first dropdown code and also tried by adding Asyncpostback but nothing work. Now i am thinking to upgrade ajaxtoolkit. maybe after that it will solve my problem. can you please advice me or suggestion to solve this problem?