We’ll create a fully functional ASP.NET Web Forms site in this tutorial that shows a GridView with:
- A DatePicker-based date filter
- A symbol dropdown list that uses [WebMethod] to dynamically populate data from a SQL table
Real-time filtering with server-side SQL data and AJAX calls
Applications that need to filter records—like IPO bids, transactions, or logs—based on a chosen date range and business symbol would find this use case suitable.
Tools & Technologies Used
- ASP.NET Web Forms (C#)
- SQL Server
- JavaScript & jQuery
- AJAX ScriptManager
- WebMethod (
[System.Web.Services.WebMethod]
)
Add Connection String in Web.config
<connectionStrings>
<add name="IPOOnline"
connectionString="Data Source=YourServer;Initial Catalog=YourDB;User ID=sa;Password=yourpassword;"
providerName="System.Data.SqlClient" />
</connectionStrings>
1) .aspx Page Markup (GridView + Filters)
<%@ Page Title="" Language="C#" MasterPageFile="~/Admin/AdminMaster.Master" EnableEventValidation="false" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="xyzpages.Admin.test" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<style>
.cms-table tr th {
text-align:center;
}
table.dataTable.no-footer {
border-bottom: none !important;
}
.editanchor {
cursor: pointer !important;
}
.displayblck {
display: block !important;
}
.container {
width: 100%!important; max-width: none !important;
} .cms-table th, .cms-table td {
border: 2px solid #ddd;
padding: 8px;
}
.cms-table th {
position: sticky;
top: .5px;
background: #fff;
color: black;
z-index: 5;
outline: 1px solid #ddd;
}
.ReportHeader{
position:sticky;
top:-1px;
z-index: 5;
} .table-bordered>tbody>tr>th{
border:none;
}
</style>
<section class="grey-bg">
<div class="container">
<div class="row">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="head-with-filer">
<div class="dashboard-heading">
<h3>Offline Order List </h3>
</div>
<div class="filter-section">
<div class="calender-section">
<div class="calender-inner" name="daterange">
<img src="images/calender.png" alt="calender" class="img-responsive" id="calendarIcon">
<span id="datevalspan" runat="server" class="date-range-display"></span>
<img src="images/down-white.png" alt="down-white" class="img-responsive">
<asp:HiddenField ID="hdnDateRange" runat="server" />
<asp:Button ID="btnBind" runat="server" Text="Bind Date" OnClick="btnBind_Click" Style="display: none;" />
</div>
</div>
</div>
</div>
<div class="cms-table table-responsive" style="padding-top: 20px;">
<div class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<div class="admin-select admindv">
<asp:DropDownList ID="drpcompany" AutoPostBack="false" runat="server">
<asp:ListItem Value="" Text="Select Company Name"></asp:ListItem>
</asp:DropDownList>
<input type="text" id="datelbl" runat="server" style="display:none;" />
</div>
<div class="admin-select admindv">
<asp:DropDownList ID="drpCategory" AutoPostBack="false" runat="server">
<asp:ListItem Value="" Text="Select Category Name"></asp:ListItem>
</asp:DropDownList>
</div>
<div class="admin-select admindv">
<asp:DropDownList ID="drpUser" AutoPostBack="false" runat="server" Width="200px">
<asp:ListItem Value="" Text="Select User"></asp:ListItem>
</asp:DropDownList>
</div>
<div class="admindv">
<asp:TextBox runat="server" CssClass="admin-input ValidateAlfa" ID="txtAppNo" ClientIDMode="Static" placeholder="Application No"></asp:TextBox>
</div>
<div class="admindv" style="display:none;" >
<asp:TextBox runat="server" CssClass="admin-input" ID="txtBidId" ClientIDMode="Static" MaxLength="10" placeholder="Bid ID"></asp:TextBox>
</div>
<div class="admindv">
<asp:TextBox runat="server" CssClass="admin-input" ID="txtPAN" ClientIDMode="Static" placeholder="PAN No"></asp:TextBox>
</div>
<div class="calender-section" style="margin-bottom: 5px;" onclick="validateuser();">
<div class="calender-inner">
<span><a style="cursor: pointer;" id="btnsearch">Search</a></span>
</div>
</div>
<div class="admindv" style="float:right !important;">
<asp:ImageButton ID="imgbtn" runat="server" OnClick="btnexcel_Click" ImageUrl="/images/excel.gif" style="cursor:pointer;float:right;"/>
<asp:HiddenField ID="datehdn" runat="server" />
<asp:HiddenField ID="symbhdn" runat="server" />
<asp:HiddenField ID="usrhdn" runat="server" />
<asp:HiddenField ID="categoryhdn" runat="server" />
</div>
</div> <div style="position: relative; display: inline-block; float: right; margin-bottom: 10px;margin-right: 16px;">
<asp:TextBox ID="txtFilter" runat="server" onkeyup="filterGrid()" placeholder="Search" CssClass="serachbox" />
<img id="clearBtn" src="../images/close.gif" alt="Clear" style="cursor: pointer; position: absolute; right: 10px; top: 50%; transform: translateY(-50%); display: none;" onclick="clearInput()" />
</div>
<div class="cms-table" id="leadstablediv" style="overflow-y: auto; max-height: 300px; width: 100%;padding-right: 15px;
padding-left: 15px;">
<asp:GridView ID="GridView1" runat="server" Width="100%" AutoGenerateColumns="false"
GridLines="None"
CssClass="table table-striped table-bordered cms-table" >
<Columns>
<asp:TemplateField HeaderText="Exchange" HeaderStyle-CssClass="gridheader-alignment" SortExpression="Exchange">
<ItemTemplate>
<asp:Label ID="lblExchange" runat="server" Text='<%#Bind("Exchange") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="User Name" HeaderStyle-CssClass="gridheader-alignment" SortExpression="ApplicantName">
<ItemTemplate>
<asp:Label ID="lblApplicantName" runat="server" Text='<%#Bind("ApplicantName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Pan" HeaderStyle-CssClass="gridheader-alignment" SortExpression="PanNo">
<ItemTemplate>
<asp:Label ID="lblPanNo" runat="server" Text='<%#Bind("PanNo") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Application No" HeaderStyle-CssClass="gridheader-alignment" SortExpression="appno">
<ItemTemplate>
<asp:Label ID="lblApplicationNo" runat="server" Text='<%#Bind("appno") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Status" HeaderStyle-CssClass="gridheader-alignment" SortExpression="Status">
<ItemTemplate>
<asp:Label ID="lblBidId" runat="server" Text='<%#Bind("Status") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Quantity" HeaderStyle-CssClass="gridheader-alignment" SortExpression="Quantity">
<ItemTemplate>
<asp:Label ID="lblQuantity" runat="server" Text='<%#Bind("Quantity") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Scrip Name" HeaderStyle-CssClass="gridheader-alignment" SortExpression="Symbol">
<ItemTemplate>
<asp:Label ID="lblSymbol" runat="server" Text='<%#Bind("Symbol") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Price" HeaderStyle-CssClass="gridheader-alignment" SortExpression="Rate">
<ItemTemplate>
<asp:Label ID="lblRate" runat="server" Text='<%#Bind("Rate") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="UCC code" HeaderStyle-CssClass="gridheader-alignment" SortExpression="uccId">
<ItemTemplate>
<asp:Label ID="lbluccId" runat="server" Text='<%#Bind("uccId") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Action" HeaderStyle-CssClass="gridheader-alignment">
<ItemTemplate>
<a style="padding-left: 5px; color:#007bff;"
href='<%# "/admin/viewissue.aspx?OffID=" + Eval("BidSrNo") + "&Exchange=" + Eval("Exchange") %>'
target="_blank">
<b>View</b>
</a>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<FooterStyle BackColor="#507CD1" Font-Bold="True" ForeColor="White" />
<HeaderStyle CssClass="ReportHeader" />
<RowStyle BackColor="#EFF3FB" HorizontalAlign="Left" />
<AlternatingRowStyle BackColor="White" HorizontalAlign="Left" />
</asp:GridView>
<div id="nodatadivopen" runat="server" class="table-body" align="center" >
<asp:Label ID="lblnodatadivopen" runat="server" Style="color: red;font-size: 17px;">No Data Available !!</asp:Label>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<div class="modalload" style="display:none">
<div class="centerload">
<img alt="" src="../images/loading1.gif" />
</div>
</div>
<script type="text/javascript">
function showLoader() {
document.querySelector('.modalload').style.display = 'flex';
}
function hideLoader() {
document.querySelector('.modalload').style.display = 'none';
}
// Hide the loader once the page loads completely
window.onload = function () {
hideLoader();
};
</script>
<script type="text/javascript">
function filterGrid() {
var input, filter, table, tr, td, i, j, txtValue;
input = document.getElementById("<%= txtFilter.ClientID %>");
// Show or hide the clear button based on input
var clearBtn = document.getElementById("clearBtn");
if (input.value) {
clearBtn.style.display = "block"; // Show clear button
} else {
clearBtn.style.display = "none"; // Hide clear button
}
if (!input) {
console.error("Input element not found");
return;
}
filter = input.value.toUpperCase();
table = document.getElementById("<%= GridView1.ClientID %>");
tr = table.getElementsByTagName("tr");
for (i = 1; i < tr.length; i++) {
tr[i].style.display = "none"; // Hide all rows
td = tr[i].getElementsByTagName("td");
for (j = 0; j < td.length; j++) {
if (td[j]) {
txtValue = td[j].textContent || td[j].innerText;
if (txtValue.toUpperCase().indexOf(filter) > -1) {
tr[i].style.display = ""; // Show row if match found
break;
}
}
}
}
}
function clearInput() {
var input = document.getElementById("<%= txtFilter.ClientID %>");
input.value = ""; // Clear the input
filterGrid(); // Call filterGrid to refresh the GridView
document.getElementById("clearBtn").style.display = "none"; // Hide clear button
}
window.onload = function () {
document.getElementById("<%= txtFilter.ClientID %>").onkeyup = filterGrid;
filterGrid(); // Call initially to set button visibility
};
</script>
<style>
.modalload {
position: fixed;
width: 100%;
height: 100%;
background: rgba(0, 0, 0, 0.5);
top: 0;
left: 0;
display: none;
justify-content: center;
align-items: center;
z-index: 9999;
}
.centerload img {
width: 80px; /* Adjust as needed */
}
.serachbox {
float: right;
padding: 8px 10px;
border: 1px solid #ddd;
-webkit-appearance: none;
border-radius: 2px;
font-size: 14px;
}
/*#leadstablediv {
margin-top: 90px;
}*/
.colorclass {
background: #34b350;
padding: 7px 10px;
border-radius: 5px;
cursor: pointer;
display: inline-block;
margin-right: 10px;
vertical-align: middle;
font-size: 14px;
color: #fff;
border-color: #34b350;
}
.colorclass:hover {
background: #fff;
color: blue;
}
.dataTables_length {
padding: 20px;
}
.dataTables_length select {
background-color: #e8ffed;
padding: 0 3px;
border: 1px solid #dadada;
border-radius: 5px;
height: 35px;
width: 45px;
margin-right: 10px;
-webkit-appearance: none;
cursor: pointer;
}
.dataTables_length select::after {
content: "\f107";
font-family: FontAwesome;
position: absolute;
position: absolute;
right: 14px;
font-size: 16px;
top: 6px;
pointer-events: none;
}
.dataTables_filter {
padding: 20px;
}
.dataTables_filter input[type="search"] {
width: 100%;
padding: 8px 10px;
border: 1px solid #ddd;
-webkit-appearance: none;
border-radius: 2px;
font-size: 14px;
}
</style>
<script>
$(document).ready(function () {
Getsymbol();
GetCategory();
GetApplicantName();
var date = new Date();
var todate = date.toLocaleDateString('fr-CA'); //2024-10-03
date.setMonth(date.getMonth() - 1); // - 1 month
var frmdate = date.toLocaleDateString('fr-CA'); // current date 2024-09-03
});
$(function () {
$('div[name="daterange"]').daterangepicker({
opens: 'right',
dateFormat: 'dd/M/yy',
maxDate: new Date(),
showDropdowns: true,
locale: {
format: 'DD MMM YYYY',
"separator": " To ",
"customRangeLabel": "Custom",
},
linkedCalendars: false,
buttonClasses: 'colorclass',
autoApply: true,
}, function (start, end, label) {
var appno = $("#txtAppNo").val();
var pan = $("#txtPAN").val();
var bidid = $("#txtBidId").val();
var cname = $("#<%=drpcompany.ClientID%>").val();
var category = $("#<%=drpCategory.ClientID%>").val();
var userid = $("#<%=drpUser.ClientID%>").val();
var test = start.format('DD MMM YYYY') + " - " + end.format('DD MMM YYYY');
$("#<%=hdnDateRange.ClientID%>").val(test);
$("#<%=datevalspan.ClientID%>").text(test);
var btnBind = document.getElementById('<%= btnBind.ClientID %>');
btnBind.click();
});
});
function getdata() {
debugger;
var appno = $("#txtAppNo").val();
var pan = $("#txtPAN").val();
var bidid = $("#txtBidId").val();
var cname = $("#<%=drpcompany.ClientID%>").val();
var category = $("#<%=drpCategory.ClientID%>").val();
var userid = $("#<%=drpUser.ClientID%>").val();
// Retrieve the text value from datevalspan
var date1 = $("#<%=datevalspan.ClientID%>").text();
// Set the value of hdnDateRange to date1
$("#<%=hdnDateRange.ClientID%>").val(date1);
// Now get the value from hdnDateRange
var dates = $("#<%=hdnDateRange.ClientID%>").val();
// Convert dates and check the type
var convertedDate = dateconvertion(dates);
console.log(convertedDate); // Log to check what it returns
if (typeof convertedDate === 'string') {
var date = convertedDate.split('~');
} else {
console.error("Converted date is not a string:", convertedDate);
}
var btnBind = document.getElementById('<%= btnBind.ClientID %>');
btnBind.click();
}
function formatDateToYMD(dateString) {
//alert(dateString);
// Split the input date string to extract year, month, and day
const parts = dateString.split('-');
const year = parseInt(parts[0], 10);
const month = parseInt(parts[1], 10) - 1; // Months are 0-based in JavaScript
const day = parseInt(parts[2], 10);
// Create a new date object in UTC
const date = new Date(Date.UTC(year, month, day));
// Format it to yyyy-MM-dd
const formattedYear = date.getUTCFullYear();
const formattedMonth = String(date.getUTCMonth() + 1).padStart(2, '0'); // Ensure two-digit month
const formattedDay = String(date.getUTCDate()).padStart(2, '0'); // Ensure two-digit day
return `${formattedYear}-${formattedMonth}-${formattedDay}`;
}
function dateconvertion(date) {
debugger;
var rdate = "";
var d = date.split('-')
for (var i = 0; i < d.length; i++) {
const date = new Date(d[i]);
const year = date.getFullYear();//2024
const month = String(date.getMonth() + 1).padStart(2, '0'); // 09 Months are 0-based
const day = String(date.getDate()).padStart(2, '0');//03
rdate += `${year}-${month}-${day}`;//rdate = 2024-09-03 ,yera=2024 , month=09
if (i == 0) {
rdate += '~';
}
}
return rdate;
}
function validateuser() {
debugger;
var pan = $("#txtPAN").val();
if (pan != "") {
if (pan.length < 10) {
alert("Please enter atleast 10 digit PAN Number.");
document.getElementById('txtPAN').focus();
return false;
}
}
getdata();
}
$('#calendarIcon').click(function () {
$('div[name="daterange"]').daterangepicker('show'); // Show the calendar when the calendar icon is clicked
});
$('#btnsearch').click(function (e) {
e.preventDefault();
validateuser();
});
function Getsymbol() {
$.ajax({
type: "POST",
url: "/Admin/test.aspx/Getsymbol",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var drpcompany = $("[id*=drpcompany]");
drpcompany.empty().append('<option selected="selected" value="">All</option>');
$.each(r.d, function () {
drpcompany.append($("<option></option>").val(this['Value']).html(this['Text']));
});
}
});
}
function GetCategory() {
$.ajax({
type: "POST",
url: "/Admin/test.aspx/GetCategory",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var drpCategory = $("[id*=drpCategory]");
drpCategory.empty().append('<option selected="selected" value="">All</option>');
$.each(r.d, function () {
drpCategory.append($("<option></option>").val(this['Value']).html(this['Text']));
});
}
});
}
function GetApplicantName() {
$.ajax({
type: "POST",
url: "/Admin/test.aspx/GetApplicantName",
data: '{}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (r) {
var drpUser = $("[id*=drpUser]");
drpUser.empty().append('<option selected="selected" value="">All</option>');
$.each(r.d, function () {
drpUser.append($("<option></option>").val(this['Value']).html(this['Text']));
});
}
});
}
function validateq()
{
debugger;
var cname = $("#<%=drpcompany.ClientID%>").val();
var category = $("#<%=drpCategory.ClientID%>").val();
var userid = $("#<%=drpUser.ClientID%>").val();
var datee = datevalspan.innerHTML;
cname=datee.toString()
document.getElementById("#<%=symbhdn.ClientID%>").value = cname;
document.getElementById("#<%=categoryhdn.ClientID%>").value = category;
document.getElementById("#<%=usrhdn.ClientID%>").value = userid;
return true;
}
</script>
</asp: Content>
2) Code-Behind to Bind GridView Based on Filter
using AppBlock;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;
namespace xyzpages.Admin
{
public partial class test: System.Web.UI.Page
{
string consString = ConfigurationManager.ConnectionStrings["IPOOnline"].ConnectionString;
public string fdate = "", sdate = ""; public DataSet ds = null;
protected void Page_Load(object sender, EventArgs e)
{
if (Session["adminuserid"] == null || Session["adminuserid"].ToString() == "")
{
Response.Redirect("/admin/Adminlogin.aspx");
}
if (!IsPostBack)
{
fdate = DateTime.Today.AddMonths(-1).ToString("dd MMM yyyy");
sdate = DateTime.Now.ToString("dd MMM yyyy");
datevalspan.InnerText = $"{fdate} - {sdate}";
hdnDateRange.Value = $"{fdate} - {sdate}";
BindGrid();
}
}
protected void btnBind_Click(object sender, EventArgs e)
{
// Get the date range from the hidden field
string time = hdnDateRange.Value;
string[] dates = time.Split('-');
if (dates.Length == 2)
{
DateTime startDate, endDate;
// Try parsing in the format "yyyy-MM-dd" first, then "dd MMM yyyy"
string[] formats = { "yyyy-MM-dd", "dd MMM yyyy" };
if (DateTime.TryParseExact(dates[0].Trim(), formats, null, System.Globalization.DateTimeStyles.None, out startDate) &&
DateTime.TryParseExact(dates[1].Trim(), formats, null, System.Globalization.DateTimeStyles.None, out endDate))
{
// Format dates as "dd MMM yyyy"
fdate = startDate.ToString("dd MMM yyyy");
sdate = endDate.ToString("dd MMM yyyy");
// Update the span with the formatted date range
datevalspan.InnerText = $"{fdate} - {sdate}";
// Call any data binding method if needed
BindGrid();
}
else
{
// Handle invalid date format (e.g., set default values or log an error)
fdate = DateTime.Today.AddMonths(-1).ToString("dd MMM yyyy");
sdate = DateTime.Today.ToString("dd MMM yyyy");
datevalspan.InnerText = $"{fdate} - {sdate}";
}
}
}
protected void btnexcel_Click(object s, ImageClickEventArgs e)
{
fdate = (Session["fromdate"] != null && Session["fromdate"].ToString() != "") ? Session["fromdate"].ToString() : "";
sdate = (Session["Todate"] != null && Session["Todate"].ToString() != "") ? Session["Todate"].ToString() : "";
ds = BindGrid();
if (ds != null)
{
if (ds.Tables[0].Rows.Count > 0)
{
string attachment = "attachment; filename=OrderBook_Offline_(" + DateTime.Now.ToString("ddMMMyyyy") + ").xls";
Response.ClearContent();
Response.AddHeader("content-disposition", attachment);
Response.ContentType = "application/vnd.ms-excel";
string tab = "";
foreach (DataColumn dc in ds.Tables[0].Columns)
{
Response.Write(tab + dc.ColumnName);
tab = "\t";
}
Response.Write("\n");
int i;
foreach (DataRow dr in ds.Tables[0].Rows)
{
tab = "";
for (i = 0; i < ds.Tables[0].Columns.Count; i++)
{
Response.Write(tab + dr[i].ToString());
tab = "\t";
}
Response.Write("\n");
}
Response.End();
}
else
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('No Data !!!');", true);
}
else
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "alert", "alert('No Data !!!');", true);
}
public DataSet BindGrid()
{
ScriptManager.RegisterStartupScript(this, GetType(), "ShowLoader", "showLoader();", true);
string appno = txtAppNo.Text;
string bidid = txtBidId.Text;
string pan = txtPAN.Text;
string cname = drpcompany.SelectedValue;
string category = drpCategory.SelectedValue;
string userid = drpUser.SelectedValue;
DateTime startDate, endDate;
if (DateTime.TryParseExact(fdate, "dd MMM yyyy", null, System.Globalization.DateTimeStyles.None, out startDate) &&
DateTime.TryParseExact(sdate, "dd MMM yyyy", null, System.Globalization.DateTimeStyles.None, out endDate))
{
fdate = startDate.ToString("yyyy-MM-dd");
sdate = endDate.ToString("yyyy-MM-dd");
Session["FromDate"] = fdate;
Session["ToDate"] = sdate;
}
SqlParameter[] parameters = {
new SqlParameter("@fdate", fdate),
new SqlParameter("@sdate", sdate),
new SqlParameter("@appno", appno),
new SqlParameter("@pan", pan),
new SqlParameter("@cname", cname),
new SqlParameter("@category", category),
new SqlParameter("@userid", userid),
new SqlParameter("@Type", "OfflineReport") };
ds = SqlHelper.ExecuteDataset(consString, CommandType.StoredProcedure, "OrderReport", parameters);
ScriptManager.RegisterStartupScript(this, GetType(), "HideLoader", "hideLoader();", true);
if (ds != null && ds.Tables[0].Rows.Count > 0)
{
GridView1.DataSource = ds;
GridView1.DataBind();
nodatadivopen.Visible = false;
}
else
{
GridView1.DataSource = null;
GridView1.DataBind();
nodatadivopen.Visible = true;
}
return ds;
}
[WebMethod]
public static List<ListItem> Getsymbol()
{
string query = "select distinct symbol from IPObidfiledetailsoffline";
string constr = ConfigurationManager.ConnectionStrings["IPOOnline"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
List<ListItem> symbol = new List<ListItem>();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
symbol.Add(new ListItem
{
Value = sdr["symbol"].ToString(),
Text = sdr["symbol"].ToString()
});
}
}
con.Close();
return symbol;
}
}
}
[WebMethod]
public static List<ListItem> GetCategory()
{
string query = "select distinct Category from IPObidfiledetailsoffline";
string constr = ConfigurationManager.ConnectionStrings["IPOOnline"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
List<ListItem> Category = new List<ListItem>();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
Category.Add(new ListItem
{
Value = sdr["Category"].ToString(),
Text = sdr["Category"].ToString()
});
}
}
con.Close();
return Category;
}
}
}
[WebMethod]
public static List<ListItem> GetApplicantName()
{
string query = "select distinct ApplicantName,uccId from IPObidfiledetailsoffline";
string constr = ConfigurationManager.ConnectionStrings["IPOOnline"].ConnectionString;
using (SqlConnection con = new SqlConnection(constr))
{
using (SqlCommand cmd = new SqlCommand(query))
{
List<ListItem> ApplicantName = new List<ListItem>();
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
using (SqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
ApplicantName.Add(new ListItem
{
Value = sdr["uccId"].ToString(),
Text = sdr["ApplicantName"].ToString()
});
}
}
con.Close();
return ApplicantName;
}
}
}
}
}
Conclusion
This solution shows how to use dynamic dropdowns, DatePicker filtering, and AJAX WebMethod with traditional ASP.NET Web Forms to create a real-time, filterable GridView. For enterprise-level apps, it is scalable, quick, and effective.
Best ASP.NET Core 10.0 Hosting
The feature and reliability are the most important things when choosing a good ASP.NET Core 10.0 hosting. HostForLIFE is the leading provider of Windows hosting and affordable ASP.NET Core , their servers are optimized for PHP web applications such as the latest ASP.NET Core 10.0 version. The performance and the uptime of the ASP.NET Core hosting service are excellent, and the features of the web hosting plan are even greater than what many hosting providers ask you to pay for. At HostForLIFEASP.NET, customers can also experience fast ASP.NET Core hosting. The company invested a lot of money to ensure the best and fastest performance of the datacenters, servers, network and other facilities. Its data centers are equipped with top equipment like cooling system, fire detection, high-speed Internet connection, and so on. That is why HostForLIFEASP.NET guarantees 99.9% uptime for ASP.NET Core . And the engineers do regular maintenance and monitoring works to assure its ASP.NET Core hosting are security and always up.