void ddlUsers_SelectedIndexChanged(object sender, EventArgs e) { try { var selected = ddlUsers.SelectedValue; if (selected == "0") { //get the whole list of organizations: ddlOrganizations.DataSource = OrgList; ddlOrganizations.DataValueField = "OrgCode"; ddlOrganizations.DataTextField = "OrganizationDesc"; ddlOrganizations.DataBind(); } else { //get organizations list according user's organization //only in case if selected organization = "0" //in other case we already have initiated list for organizations: if (ddlOrganizations.SelectedValue == "0") { var userOrg = ((DataRow)UsersListTable.Select("UserID = " + selected)[0])["Organization"].ToString(); var col = new ListItemCollection(); var it = new ListItem("", "0"); col.Add(it); var orgsList = OrgList.Where(o => o.Organization == userOrg); foreach (var org in orgsList) { it = new ListItem(org.OrganizationDesc, org.Organization); col.Add(it); } ddlOrganizations.DataSource = col; ddlOrganizations.DataValueField = "Value"; ddlOrganizations.DataTextField = "Text"; ddlOrganizations.DataBind(); } } } catch (Exception ex) { //erase event OnError: if (this.OnError != null) { var arg = new OrgUsersErrEventArgs(); arg.ErrorMessage = ex.Message; this.OnError(this, arg); } } }