Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Webforms网格不显示其数据绑定数据_C#_Asp.net_.net_Syncfusion - Fatal编程技术网

C# Webforms网格不显示其数据绑定数据

C# Webforms网格不显示其数据绑定数据,c#,asp.net,.net,syncfusion,C#,Asp.net,.net,Syncfusion,我正在使用Syncfusions网格控件用于我基于的WebformsSee。我有一个非常简单的UserControl,上面有以下内容: <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="NAVPrices.ascx.cs" Inherits="Q5.NAVPrices" %> <ej:Grid ID="PriceListGrid" runat="server" ClientIDMode="Static" A

我正在使用Syncfusions网格控件用于我基于的WebformsSee。我有一个非常简单的UserControl,上面有以下内容:

<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="NAVPrices.ascx.cs" Inherits="Q5.NAVPrices" %>
<ej:Grid ID="PriceListGrid" runat="server" ClientIDMode="Static" AllowSelection="True">
    <Columns>
        <ej:Column Field="ID" HeaderText="ID" IsPrimaryKey="True" TextAlign="Right" Width="125"></ej:Column>
        <ej:Column Field="Description" HeaderText="Description" Width="100" />
        <ej:Column Field="CustomerNo" HeaderText="Customer Number" Width="100" />
        <ej:Column Field="CustomerName" HeaderText="Customer" Width="150" />
        <ej:Column Field="Status" HeaderText="Status" Width="100" />
        <ej:Column Field="CreatedBy" HeaderText="Created" Width="100" />
        <ej:Column Field="ApprovedBy" HeaderText="Approved" Width="100" />
    </Columns>
</ej:Grid>
Details Grid
<ej:Grid ID="PriceLineGrid" runat="server" ClientIDMode="Static">
    <Columns>
        <ej:Column Field="ID" HeaderText="ID" IsPrimaryKey="true" TextAlign="Right" Width="75" />
        <ej:Column Field="PriceListId" HeaderText="PriceList ID" Width="80" />
        <ej:Column Field="Description" HeaderText="Description" Width="75" />
        <ej:Column Field="LastCost" HeaderText="Last Cost" TextAlign="Right" Width="75" Format="{0:C}" />
        <ej:Column Field="SubGroup" HeaderText="Sub Group" Width="80" />
        <ej:Column Field="MfgName" HeaderText="Mfg Name" Width="110" />
        <ej:Column Field="Comment" HeaderText="Comment" Width="110" />
    </Columns>
</ej:Grid>

<script type="text/javascript">
        $(function () {
            $("#PriceListGrid").ejGrid({
                selectedRowIndex: 0,
                rowSelected: function (args) {
                    var priceListId = args.data.ID;
                    var detaildata = window.ej.DataManager(window.gridData).executeLocal(window.ej.Query().where("PriceListId", window.ej.FilterOperators.equal, priceListId, false).take(10));
                    var gridObj = $("#PriceLineGrid").ejGrid("instance");
                    gridObj.dataSource(window.ej.DataManager(detaildata.slice(0, 5)));
                }
            });
        });
</script>
我已经完成了代码的编写,我的IList按照我的预期由数据层中的对象填充,并且格式正确,我可以看到

这是两个对象的外观:

    [Serializable]
public class PriceList
{
    public string ID { get; set; }
    public string Description { get; set; }
    public string CustomerNo { get; set; }
    public string CustomerName { get; set; }
    public string Status { get; set; }
    public string CreatedBy { get; set; }
    public string ApprovedBy { get; set; }  
}

[Serializable]
public class PriceLineItems
{
    public string ID { get; set; }
    public string PriceListId { get; set; }
    public string Description { get; set; }
    public string LastCost { get; set; }
    public string SubGroup { get; set; }
    public string MfgName { get; set; }
    public string Comment { get; set; }
}
编辑

作为参考,这是可以工作的JavaScript:

    $(function() {
    var $data = $("#PriceLineGrid").ejGrid("instance")._dataSource();
    $("#PriceListGrid").ejGrid({
        selectedRowIndex: 0,
        rowSelected: function(args) {
            var priceListId = args.data.ID;
            var detaildata = ej.DataManager($data).executeLocal(ej.Query().where("PriceListId", ej.FilterOperators.equal, priceListId, false).take(10));
            var gridObj = $("#PriceLineGrid").ejGrid("instance");
            gridObj.dataSource(ej.DataManager(detaildata.slice(0, 5)));
        }
    });
});
我现在的问题是,我并没有在PageLoad上用所有行填充Grid2,因为行太多了。因此,我需要更改此项以调用代码隐藏中的方法…我将为此打开一个新线程。

将IList变量强制转换为列表:

在您的情况下,如果两个网格都没有填充网格,则以下是原因

关于初始渲染

Syncfusion网格与IEnumerable配合良好,正如Chris Schiffhauer所建议的,将priceLists和priceLineItems更改为List

在选定的主行上

在PriceListGrid的rowSelected事件中,您使用window.gridData作为数据源来过滤详细的gridPriceLineGrid数据。但是window.gridData将不包含PriceListId字段,因此在select行上也不会填充任何数据

 var detaildata = window.ej.DataManager(window.gridData).executeLocal(window.ej.Query().where("PriceListId", window.ej.FilterOperators.equal, priceListId, false).take(10));
从jsondata.min.js引用的window.gridData将包含Syncfusion示例网格使用的JSON数组

因此,要根据主网格的选定行值过滤详细网格数据源,请使用以下代码

$("#PriceListGrid").ejGrid({
            selectedRowIndex: 0,
            rowSelected: function (args) {
                var priceListId = args.data.ID;
                var gridObj = $("#PriceLineGrid").ejGrid("instance");
                var detaildata = window.ej.DataManager(gridObj.model.dataSource).executeLocal(window.ej.Query().where("PriceListId", window.ej.FilterOperators.equal, priceListId, false).take(10));

                gridObj.dataSource(window.ej.DataManager(detaildata.slice(0, 5)));
            }
        });

在上面的示例中,将ej.DataManagerwindow.gridData更改为ej.DataManagergridObj.model.dataSource。

在GetPriceLineItems中,将数据源设置为PriceLineItems,其声明不显示。你把这和priceLineItems混淆了吗?哎呀,你只是在我的问题中发现了我的一个输入错误。修复了getter方法返回列表、IEnumerable或IQueryable?如果不是列表,则它可能没有尝试从您的数据库中枚举,并且失败,因为在网格尝试加载连接时,连接已关闭。所以试试BusinessLayer.Company.getpricelistthis.CustomerNo.ToList;为什么“GetPriceLists”是公共的而“GetPriceLineItems”是私有的?他们从哪里打来的?两个网格都不能显示它们的数据吗?@chrisschifffhauer谢谢,这只是我多次尝试解决问题的结果。他们俩都是私密的,我的建议太好了,我的疏忽太愚蠢了!但是,它仍然没有显示我的数据……谢谢,你的回答非常接近我在这一步中所需要的。我将工作javaScript作为编辑添加到我的问题中。我现在的问题似乎是,我并没有像示例假设的那样用所有行填充第二个网格。我要做的事情太多了,需要等待Grid1中的一行被调用,这样Grid2就可以开始过滤了。我实际上会接受你的答案,因为这是我解决第一个问题的原因,然后我会为我的新问题开始一个新的线程。看起来是应该做的事。
priceLineItems.ToList();

 and

priceLists.ToList(); 
 var detaildata = window.ej.DataManager(window.gridData).executeLocal(window.ej.Query().where("PriceListId", window.ej.FilterOperators.equal, priceListId, false).take(10));
$("#PriceListGrid").ejGrid({
            selectedRowIndex: 0,
            rowSelected: function (args) {
                var priceListId = args.data.ID;
                var gridObj = $("#PriceLineGrid").ejGrid("instance");
                var detaildata = window.ej.DataManager(gridObj.model.dataSource).executeLocal(window.ej.Query().where("PriceListId", window.ej.FilterOperators.equal, priceListId, false).take(10));

                gridObj.dataSource(window.ej.DataManager(detaildata.slice(0, 5)));
            }
        });