How to fill select option order type after search submit on post function ?

Ahmed Abd El Aziz 315 Reputation points
2023-07-16T05:26:35.41+00:00

I work on asp.net core razor page model .I face issue i can't store result of select option ajax request that fill order type 

to fill it after serach reset submit done

because after search button click order type select option reset 

so i need to fill select option again of data that have before submit or before reset

so I get data list fill select option order type success on function RelatedOrderType with 

reprintModel.OrderTypes = orderTypes;

How to get result or store result of reprintModel.OrderTypes = orderTypes; on funcion OnPost after search submit done

meaning how to get result of ajax request onPost function after search submit finish

   $('#orderType-select').prepend('<option value="0" selected>-- Select Order Type --</option>');

my code details as below 

<form id="FrmReprintAdcSupport" method="post" onsubmit="return validateForm() ">
        <div class="card" style="margin-top:-50px;">
        <div class="card-body">

            <div class="row">
                <div class="col-lg-12 col-12 row">

                    <div class="col-md-2 col-lg-1">
                        <input type="hidden" name="Reset" value="XX" />
                        <label for="userty-select" class="form-control-label" style="color:#525f7f;font-size:15px;font-family: 'Open Sans', sans-serif;">OrderType</label>
                        <select id="orderType-select" name="selectedordertype" asp-for="reprintModel.SelectedOrderType" name="ordertypeid" class="form-select" style="color:#000 !important;font-size:15px;font-family: 'Open Sans' , sans-serif;" onchange="updateHiddenFields()">
                        <option value="0">--Select--</option>

                        @foreach (var ordertype in Model.reprintModel.OrderTypes)
                        {
                            <option value="@ordertype.OrderTypes">@ordertype.OrderTypes</option>
                        }
                        </select>
                    </div>


                    <input type="hidden" id="hiddenselectedOrderType" name="hiddenselectedOrderType" value="@Model.hiddenselectedOrderType" />



                </div>
            </div>







        </form>

$('#totimeselect').change(function (event) {
                //event.preventDefault();
                var DateLogged = $("#statusDateId").val();
                var branchId = $("#branch-select").val();
                var FromTime = $("#txtFromTime").val();
                var ToTime = $("#totimeselect").val();
                console.log(branchId);
                if (DateLogged) {
                    console.log(DateLogged);
                    $.ajax({

                        url: '?handler=RelatedOrderType',
                        type: "GET",
                        dataType: "json",

                        data: { branchId: branchId, DateLogged: DateLogged, FromTime: FromTime, ToTime: ToTime },
                        success: function (data) {
                            //console.log(data);
                             $('#orderType-select').empty();
                            $.each(data, function (i, item) {
                                console.log(item);
                                $('#orderType-select').append($('<option>', {
                                    value: item.orderTypes,
                                    text: item.orderTypes
                                }));
                            });
                            // Add a default option
                            $('#orderType-select').prepend('<option value="0" selected>-- Select Order Type --</option>');
                        }
                    });
                }
            });


public JsonResult OnGetRelatedOrderType(string branchId, string DateLogged,string FromTime,string ToTime)
        {

            string eventDatefromtime = Convert.ToDateTime(FromTime).ToString("HH:mm");
            string eventDatetotime = Convert.ToDateTime(FromTime).AddMinutes(Convert.ToInt16(ToTime)).ToString("HH:mm");


            DataTable dtordertype = _IAdcSupportService.GetOrderTypes(branchId, DateLogged, eventDatefromtime, eventDatetotime);

            List<OrderTypePrinterServer> orderTypes = dtordertype.AsEnumerable()
 .Select(row => new OrderTypePrinterServer
 {
     // Map the values from the DataRow to the properties of the PrintServer object
     OrderTypes = row["Doc_type"].ToString()

 })
 .ToList();

            reprintModel.OrderTypes = orderTypes;


            return new JsonResult(orderTypes);

        }

Now I click on search button to display data
so OnPost Function will fire

public async Task OnPost(IFormCollection formcollection)
{
after search data and data display select option order type will reset so I will fill again

reprintModel.OrderTypes = orderTypes;
}
Developer technologies ASP.NET ASP.NET Core
Developer technologies ASP.NET Other
0 comments No comments
{count} votes

Accepted answer
  1. Bruce (SqlWork.com) 77,686 Reputation points Volunteer Moderator
    2023-07-16T15:59:18.45+00:00

    The browser will only send the selected value of the select. The postback code will have to regenerate the list based on the posted values.

    0 comments No comments

0 additional answers

Sort by: Most helpful

Your answer

Answers can be marked as Accepted Answers by the question author, which helps users to know the answer solved the author's problem.