Controller:
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace mvc.Controllers
{
public class HomeController : Controller
{
string constr = "your conneciton string";
public ActionResult Index()
{
return View();
}
public ActionResult GetAllTableNames() {
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("select name from sys.tables " , con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
var data = dt.AsEnumerable().Select(k => k["name"].ToString());
return Json(data);
}
public ActionResult GetAllColumnNames(string tbl)
{
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @tbl " , con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
cmd.Parameters.AddWithValue("@tbl", tbl);
DataTable dt = new DataTable();
da.Fill(dt);
var data = dt.AsEnumerable().Select(k => k["COLUMN_NAME"].ToString());
return Json(data);
}
public ActionResult GetTableData(string tableName, string columnNames)
{
SqlConnection con = new SqlConnection(constr);
SqlCommand cmd = new SqlCommand("select " + columnNames + " from " + tableName, con);
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
da.Fill(dt);
string data = JsonConvert.SerializeObject(dt);
return Json(data);
}
}
}
CSHTML
<script src="~/Scripts/jquery-1.10.2.js"></script>
<script>
$(function () {
$.ajax({
url: '@Url.Action("GetAllTableNames", "home")',
data: {},
type: 'post',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var ddl = $('#ddlTableNames');
var options = [];
for (var i = 0, len = data.length; i < len; ++i)
options.push('<option value="' + data[i] + '">' + data[i] + '</option>');
ddl.append(options.join(''));
},
error: function (a, b, c) {
console.log(a, b, c);
}
});
});
function populateColumns(ddl){
var table = ddl.value;
$.ajax({
url: '@Url.Action("GetAllColumnNames", "home")',
data: JSON.stringify({'tbl':table}),
type: 'post',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
var ddl = $('#ddlColumnNames');
ddl.empty();
var options = [];
for (var i = 0, len = data.length; i < len; ++i)
options.push('<option value="' + data[i] + '">' + data[i] + '</option>');
ddl.append(options.join(''));
},
error: function (a, b, c) {
console.log(a, b, c);
}
});
}
function getdata() {
var table = $('#ddlTableNames').val();
var columns = $('#ddlColumnNames').val().join(',');
debugger;
$.ajax({
url: '@Url.Action("GetTableData", "home")',
data: JSON.stringify({ 'tableName': table, 'columnNames':columns }),
type: 'post',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
debugger;
var json = JSON.parse(data);
generateTable(json)
},
error: function (a, b, c) {
console.log(a, b, c);
}
});
}
function generateTable(json) {
var $table = $('#tblDynamic');
$table.find('thead').empty()
$table.find('tbody').empty()
if (json && json.length > 0) {
var header = json[0];
var columns = [];
for (var col in header) {
columns.push('<th>' + col + '</th>');
}
$table.find('thead').append('<tr>' + columns.join('') + '</tr>');
var rows = [];
for (var i = 0; i < json.length; i++) {
var row = json[i];
var tds = [];
for (var col in row) {
tds.push('<td>' + row[col] + '</td>');
}
rows.push('<tr>' + tds.join() + '</tr>');
}
$table.find('tbody').append(rows.join(''));
}
}
</script>
<select id="ddlTableNames" onchange="populateColumns(this)">
</select> <br />
<select id="ddlColumnNames" multiple></select>
<button onclick="getdata()" >get data</button>
<table id="tblDynamic">
<thead></thead>
<tbody></tbody>
</table>
Note: Take care of validations