从 C# 变量中获取数据表属性的值

Posted

技术标签:

【中文标题】从 C# 变量中获取数据表属性的值【英文标题】:Get value from a C# variable for datatables attribute 【发布时间】:2019-01-11 01:50:02 【问题描述】:

我使用 C# 函数 (File.aspx.cs) 从外部源获取一些值,并将该值用作数据表上的 custom attributes。然而,我只得到 0,1,2 等作为 ID 值,而不是 C# dataID 变量的实际值,尽管我已经在我的 JS 文件上使用了var ID = '<%=dataID%>';(没有引号我得到错误(JS)表达式预期)。

如何在我的 dt.file.js 上获取这个 dataID 值?

文件.aspx.cs

public partial class Example : System.Web.UI.Page

    public static int dataID;

    protected void Page_Load(object sender, EventArgs e)
    

    

    [WebMethod]
    [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
    public static DataTableResponse GetList(string parameters)
    
        DataTableAjaxPostModel model = JsonConvert.DeserializeObject<DataTableAjaxPostModel>(parameters);
        List<FieldAgentRow> list = new List<FieldAgentRow>();

        XmlDocument doc = Utilities.FileToXmlDocument("data");

        foreach (XmlNode person in doc.SelectNodes("//Personal"))
        
            FieldAgentRow tmp = new FieldAgentRow();

            //other codes

            tmp.data_id = Int32.Parse(person.SelectSingleNode("ID").InnerText);
            dataID = tmp.data_id;

            list.Add(tmp);
        

        DataTableResponse res = new DataTableResponse();
        res.draw = model.draw;
        res.data = list;

        return res;
    

dt.file.js

$(document).ready(function () 
    var ID = '<%=dataID%>';
    var table = $('#list').DataTable(
        "createdRow": function (row, data, ID ) 
            $(row).attr('data-id', ID);
        
        //other codes
    );

更新解决方案: 感谢Paul's answer,我可以通过修改我的JS代码来获取data_id值:

$(document).ready(function () 
    var table = $('#list').DataTable(
        "createdRow": function (row, data, dataindex) 
            $(row).attr('data-id', data.data_id);
        
        //other codes
    );

【问题讨论】:

是我还是你的GetList 没有return 什么? @Rafalon 我添加了缺失的部分。但这不是有趣的部分,因为我只想关注变量 您需要使用 data 属性来获取 createdRow 方法 datatables.net/reference/option/createdRow 中行的 json。您应该能够执行 data.data_id (假设在序列化期间未更改属性名称)。您也可以在那里执行 console.log(data) 并在浏览器开发工具 (f12) 中检查它以查看可用的属性。 @PaulZepernick 它有效!这实际上比我想象的要简单得多。您可以将此作为答案发布,以便我接受吗? 顺便说一句,如果您只是想为该行分配一个唯一的 id,您可以在您的行中发送 json 属性 DT_RowId。如果您使用的是 DT 1.10.8 > 似乎有一个选项可以更改默认名称 datatables.net/reference/option/rowId。 【参考方案1】:

您需要使用 data 属性来获取 createdRow 方法 https://datatables.net/reference/option/createdRow 中行的 json。你应该可以做 data.data_id (假设属性名称在序列化过程中没有改变)..

您也可以在那里执行 console.log(data) 并在浏览器开发工具 (f12) 中检查它以查看可用的属性。

【讨论】:

以上是关于从 C# 变量中获取数据表属性的值的主要内容,如果未能解决你的问题,请参考以下文章

C#中怎样从一个form的文本框获取另一个form中Comobox控件的值

JavaScript获取后台C#变量以及后台方法

在 C# 中获取 JavaScript/HTML 变量的值

C# 无法从 lambda 表达式中获取类属性值

C#中如何获取另外一个窗体中传递过来的值?

c#如何获取数据库中某个表中的其中一个字段的多条值