繁体   English   中英

在 C# 中将 GridView 与 MVC 5 中的数据库绑定,我有 ajax JavaScript

[英]Bind GridView With Database In MVC 5 In C# and i have ajax JavaScript

我在创建网格时遇到问题(没有剑道)我尝试制作一本字典。 我有一个单词列表并将其传递给 ajax JavaScript 并将其显示在视图中的网格中。 但我不知道如何处理这个:(。谢谢大家

这是我的 controller

public ActionResult ChekingInBank(string username, string password, string datasource, string bnkname, string SqlQuery)
{
    SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
    builder["Server"] = datasource;
    builder["Connect Timeout"] = 1000;
    builder["Trusted_Connection"] = true;
    builder["Integrated Security"] = false;
    builder.InitialCatalog = bnkname;
    builder.Password = password;
    builder.UserID = username;
   
     List<TranslateViewModel>  translateViewList = new List< TranslateViewModel>();
    WebGrid TranslateGrid = new WebGrid();
   
    using (SqlConnection con = new SqlConnection(builder.ConnectionString))
    {
        con.Open();
        using (SqlCommand cmd = new SqlCommand(SqlQuery, con))
        {
            using (SqlDataReader dr = cmd.ExecuteReader())
            {
                while (dr.Read())
                {
                    TranslateViewModel translateView = new TranslateViewModel();
                    translateView.id = dr[0].ToString();
                    translateView.word = dr[1].ToString();
                    translateView.translate = dr[2].ToString();

                    translateViewList.Add(translateView);

                }
                if (translateViewList.Count>0)
                {
                    return Json( new {translateViewList = translateViewList, JsonRequestBehavior.AllowGet);
                }
                else
                {
                    return Json("No Record Found");
                }
               
               
            }
           
           
        }
    }
}

JavaScript

function chekingInBank() {
    var translate = $("#eWord").val();
    var bnkname = $("#combo").val();
    var username = $("#Username").val().trim();
    var password = $("#password").val();
    var datasource = $("#Datasource").val();
    var SqlQuery = "select * from lego.LocalizationView  where Word =N'" + translate + "'";
    if (bnkname) {
        $.ajax({
            url: 'Home/chekingInBank?' + "Username=" + username + "&Password=" + password + "&databaseConString=" + datasource + "&bnkname=" + bnkname,
            data: {
                bnkname: bnkname,
                username: username,
                password: password,
                datasource: datasource,
                SqlQuery: SqlQuery
            },
            //dataType: "json",
            type: "get",
            datatype: "json",
            traditional: true,
            success: function (data)
            {
             
               `I have problem with this `
                debugger;
                if (data != "No Record Found") {
                     $('#gridContent').html(data);
                }
                else {
                   alert('No Record Found')
                    
                }
            },
              
        });

    }
    else
    {
        //do nothing
    }
}

和我的看法

还有这个:(((

@{

    var grid = new WebGrid(VeiwModeList, canPage: true, rowsPerPage: 5,
                      selectionFieldName: "selectedRow", ajaxUpdateContainerId: "gridContent");
    grid.Pager(WebGridPagerModes.All);

}
@grid.GetHtml(
tableStyle: "webGrid",
columns: new[]
{
    grid.Column("id"),
    grid.Column("Word"),
    grid.Column("Translate")
});

首先,你不应该从 javascript 向服务器发送数据库的用户名、密码、数据库名称和 SQL 查询等数据。 这很危险,因为任何人都可以访问您的数据库。 例如,可以将您的查询更改为类似

var SqlQuery = "TRUNCATE TABLE lego.LocalizationView"

并且您的服务器代码将执行此破坏性查询。

其次,我认为您对使用 WebGrid 有一些误解。 例如,您的控制器方法返回 JSON,但在 js 代码中,您将此 JSON 作为 html 放入 HTML 元素中:

$('#gridContent').html(data);

你也没有提到你的 controller 动作是否用 HttpGet 属性装饰。

我建议您找到并实施(复制)一个使用 WebGrid 处理 AJAX 请求的工作示例,例如我用谷歌搜索的内容: 链接

在此示例中,实体框架用于连接到数据,但您可以从在 controller 方法中返回 static JSON 开始,以验证这是否全部有效:

[HttpPost]
public JsonResult AjaxMethod(int pageIndex)
{
    CustomerModel model = new CustomerModel();
    model.PageIndex = pageIndex;
    model.PageSize = 10;
    model.RecordCount = 2; //number of records - for pager
    int startIndex = (pageIndex - 1) * model.PageSize;
    model.Customers = new List<Customer> //some random static data
    {
        new Customer
        {
            CustomerID = "AAAA",
            City = "City 1",
            ContactName = "Contact Name 1",
            Country = "Country 1"
        },
        new Customer
        {
            CustomerID = "BBBB",
            City = "City 2",
            ContactName = "Contact Name 2",
            Country = "Country 2"
        }//, add some more dummy customer's info
    };

    return Json(model);
}

当您重现它时,您可以将 CustomerModel 更改为您的 class,将 POST 更改为 GET,连接到您的数据库,修改网格列等等。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM