Member 7678194 Ответов: 1

Не попал в функцию на стороне клиента


На самом деле я хочу этого,
я поставил содержимого объекта DataTable нескольких столбцов, значения в dropdownlist для.

Я пишу этот код,но не работаю над ним должным образом.
Не попал в клиентскую функцию, то есть:-funChangeTable(ddlobj).
пожалуйста, какое-то тело поможет мне решить вышеуказанную проблему.

Что я уже пробовал:

1:- мой файл кода aspx находится ниже:
--------------
<pre><%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="ExcelGridDemo.WebForm1" %>

    <title>

<%--    
    --%>
        $(document).ready(function () {
            function funChangeTable(ddlObj) {
                var name = ddlObj.value;
            debugger;

                $.ajax({
                    url: 'WebForm1.aspx/GetTableData',
                    data: JSON.stringify({ tableName: name }),
                    type: 'post',
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'JSON',
                    success: function (response) {
                        var json = JSON.parse(response.data);
                        generateTable(json);
                    },
                    error: function (a, b, c) {
                        console.log(a, b, c);
                    }
                });
            }

            function generateTable(json) {
                debugger;
                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>' + col + '</td>');
                        }
                        rows.push('<tr>' + tds.join() + '</tr>');
                    }
                    $table.find('tbody').append(rows.join(''));
                }

            }
        });
    
        <asp:dropdownlist runat="server" id="ddlTableNames" selectedindexchanged="funChangeTable(this)">
        
            <table id="tblDynamic" border="1"><thead></thead>            <tbody></tbody>        </table>




2:- мой код за файл ниже:
-----------------------

using System;
using System.Data;
using System.Data.SqlClient;
using System.Web.Services;
using Newtonsoft.Json; // Add this reference 
using System.Linq;
using System.Collections.Generic;

namespace ExcelGridDemo
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        //const string connString = "Data Source=PRGSERVER\\SQLEXPRESS;Initial Catalog=FinalNextErp;Integrated Security=True";
        const string connString = "Data Source=PRGSERVER\\SQLEXPRESS;Initial Catalog=FinalNextErp;Persist Security Info=True;User ID=sa;Password=dutta@1234;Pooling=True;Max Pool Size=200;Connect Timeout=0";

        protected void Page_Load(object sender, EventArgs e)
        {
            var data = GetAllTableNames();
            ddlTableNames.DataSource = data;    
            ddlTableNames.DataBind();
            ddlTableNames.Items.Insert(0, "Select a Table");
        }

        private static string[] GetAllTableNames()
        {
            SqlConnection con = new SqlConnection(connString);
            SqlCommand cmd = new SqlCommand("select name from sys.tables", con);
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            DataTable dt = new DataTable();
            da.Fill(dt);
            return dt.AsEnumerable().Select(k => k[0] + "").ToArray();
        }

        [WebMethod]
        public static string GetTableData(string tableName)
        {
            if (GetAllTableNames().Contains(tableName)) // To avoid sql injection
            {
                SqlConnection con = new SqlConnection(connString);
                SqlCommand cmd = new SqlCommand("select * from " + tableName, con);
                SqlDataAdapter da = new SqlDataAdapter(cmd);
                DataTable dt = new DataTable();
                da.Fill(dt);
                string json = JsonConvert.SerializeObject(dt);
                return json;
            }
            else
                return "Table Name Not Found";
        }
    }
}

1 Ответов

Рейтинг:
1

Nirav Prabtani

Что такое ddlObj ??

Почему вы передаете его в функцию funChangeTable ?

Почему функция funChangeTable есть ли внутри document.ready функция ?

Ваш код должен быть

$(document).ready(function () {
funChangeTable();
});

function funChangeTable(){
var name = ddlObj.value;
          

                $.ajax({
                    url: 'WebForm1.aspx/GetTableData',
                    data: JSON.stringify({ tableName: name }),
                    type: 'post',
                    contentType: 'application/json; charset=utf-8',
                    dataType: 'JSON',
                    success: function (response) {
                        var json = JSON.parse(response.data);
                        generateTable(json);
                    },
                    error: function (a, b, c) {
                        console.log(a, b, c);
                    }
                });
            }

            function generateTable(json) {
                debugger;
                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>' + col + '</td>');
                        }
                        rows.push('<tr>' + tds.join() + '</tr>');
                    }
                    $table.find('tbody').append(rows.join(''));
                }

            }
        });


Дайте мне знать, если вам это не ясно.