diff --git a/src/registrar/admin.py b/src/registrar/admin.py
index ca51e8b72..e21f7581b 100644
--- a/src/registrar/admin.py
+++ b/src/registrar/admin.py
@@ -3208,12 +3208,17 @@ class PortfolioAdmin(ListHeaderAdmin):
obj: Portfolio = self.get_object(request, object_id)
extra_context = extra_context or {}
extra_context["skip_additional_contact_info"] = True
+ sort_by = request.GET.get('sort', 'requested_domain__name')
+ order = request.GET.get('order', 'asc')
+
+ order_prefix = '-' if order == 'desc' else ''
+ domain_requests_order_by = [f"{order_prefix}{sort_by}"]
if obj:
extra_context["members"] = self.get_user_portfolio_permission_non_admins(obj)
extra_context["admins"] = self.get_user_portfolio_permission_admins(obj)
extra_context["domains"] = obj.get_domains(order_by=["domain__name"])
- extra_context["domain_requests"] = obj.get_domain_requests(order_by=["requested_domain__name"])
+ extra_context["domain_requests"] = obj.get_domain_requests(order_by=domain_requests_order_by)
return super().change_view(request, object_id, form_url, extra_context)
def save_model(self, request, obj, form, change):
diff --git a/src/registrar/assets/js/get-gov-admin.js b/src/registrar/assets/js/get-gov-admin.js
index 73f3dded1..0de2c7c81 100644
--- a/src/registrar/assets/js/get-gov-admin.js
+++ b/src/registrar/assets/js/get-gov-admin.js
@@ -1035,3 +1035,19 @@ document.addEventListener('DOMContentLoaded', function() {
};
}
})();
+
+(function sortTable(sortBy, order,event) {
+ event.preventDefault()
+ const xhr = new XMLHttpRequest();
+ xhr.open('GET', `?sort=${sortBy}&order=${order}`, true);
+ xhr.onreadystatechange = function() {
+ if (xhr.readyState === 4 && xhr.status === 200) {
+ // Parse the response and update only the table body or container
+ const parser = new DOMParser();
+ const doc = parser.parseFromString(xhr.responseText, 'text/html');
+ const sortedContent = doc.querySelector('#table-content').innerHTML;
+ document.querySelector('#table-content').innerHTML = sortedContent;
+ }
+ };
+ xhr.send();
+})();
\ No newline at end of file
diff --git a/src/registrar/templates/django/admin/includes/portfolio/portfolio_domain_requests_table.html b/src/registrar/templates/django/admin/includes/portfolio/portfolio_domain_requests_table.html
index 46303efce..9988e62e1 100644
--- a/src/registrar/templates/django/admin/includes/portfolio/portfolio_domain_requests_table.html
+++ b/src/registrar/templates/django/admin/includes/portfolio/portfolio_domain_requests_table.html
@@ -5,11 +5,19 @@
- Name |
- Status |
+
+
+ Name
+
+ |
+
+
+ Status
+
+ |
-
+
{% for domain_request in domain_requests %}
{% url 'admin:registrar_domainrequest_change' domain_request.pk as url %}
diff --git a/src/registrar/templates/django/admin/includes/portfolio/portfolio_domains_table.html b/src/registrar/templates/django/admin/includes/portfolio/portfolio_domains_table.html
index 56621b769..f81bc080c 100644
--- a/src/registrar/templates/django/admin/includes/portfolio/portfolio_domains_table.html
+++ b/src/registrar/templates/django/admin/includes/portfolio/portfolio_domains_table.html
@@ -5,8 +5,12 @@