【问题标题】:ShieldUI grid data from codebehind datatable来自代码隐藏数据表的 ShieldUI 网格数据
【发布时间】:2017-10-26 08:46:32
【问题描述】:

我用 ShieldUI 实现了一个 jQuery gridview。 我遇到的问题是网格的数据源。

这是他们的例子: http://demos.shieldui.com/web/grid-general/basic-usage

我需要从后台代码中创建的数据表中发送数据。

是否可以将此类数据发送到 ShieldDataSource?

谢谢。

<%@ Page Title="" Language="C#" MasterPageFile="Site.Master" AutoEventWireup="true" CodeBehind="Progress2.aspx.cs" Inherits="INAWebAppTest.Form.Progress2" %>

<%@ Register Assembly="Shield.Web.UI" Namespace="Shield.Web.UI" TagPrefix="shield" %>

<asp:Content ID="Content1" ContentPlaceHolderID="MainContent2" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="FeaturedContent" runat="server">
    <script type="text/javascript" src="//www.shieldui.com/shared/components/latest/js/jquery-1.11.1.min.js"></script>
    <script type="text/javascript" src="//www.shieldui.com/shared/components/latest/js/shieldui-all.min.js"></script>


    <section class="success" id="about">
        <div class="container">


            <asp:UpdatePanel ID="UpdatePanel2" runat="server">
                <ContentTemplate>

                    <asp:Label ID="Label1" runat="server"><h3>Progress</h3></asp:Label>
                    <div class="g-hr type_short type_simple">
                        <span class="g-hr-h">
                            <i class="fa fa-"></i>
                        </span>
                    </div>
                    <div style="vertical-align: top; margin-bottom: 0px; align-content: center; margin-left: auto; margin-right: auto">
                        <asp:Button ID="LeftButton" runat="server" Text="<" class="g-btn type_primary size_small" OnClick="ibDLeft_Click" />
                        <asp:TextBox ID="tbDate" runat="server" AutoPostBack="True" OnTextChanged="tbDate_TextChanged" ReadOnly="true" Style="width: 30%; text-align: center" TextMode="SingleLine"></asp:TextBox>
                        <asp:Button ID="RightButton" runat="server" Text=">" class="g-btn type_primary size_small" OnClick="ibDRight_Click" />

                    </div>
                    <asp:RequiredFieldValidator ID="RequiredFieldValidator" runat="server" ControlToValidate="tbDate" ErrorMessage="Odaberite datum" />

                    <shield:ShieldDataSource ID="shieldDataSource" runat="server" Data="testData"> </shield:ShieldDataSource>
                    <shield:ShieldGrid ID="ShieldGrid1" runat="server" ClientDataSourceID="shieldDataSource">
                        <Columns>
                            <shield:GridColumn Field="dfCategory" Width="70px" Title="ID"></shield:GridColumn>
                            <shield:GridColumn Field="dfActivityID" Title="Person Name"></shield:GridColumn>
                            <shield:GridColumn Field="dfActivityName" Title="Company Name"></shield:GridColumn>
                        </Columns>
                    </shield:ShieldGrid>                  
                </ContentTemplate>
            </asp:UpdatePanel>
        </div>
    </section>
</asp:Content>

【问题讨论】:

    标签: jquery asp.net gridview datagrid shieldui


    【解决方案1】:

    您可以在页面加载方法中执行以下操作,只需将 DataSource 的 Data 属性设置为 aspx 中的 testData 即可。

    <shield:ShieldDataSource ID="shieldDataSource" runat="server" Data="testData"> 
        </shield:ShieldDataSource>
        <shield:ShieldGrid ID="grid" runat="server" ClientDataSourceID="shieldDataSource">
            <Sorting Enabled="true" />
            <Columns>
                <shield:GridColumn Field="Id" />
                <shield:GridColumn Field="Name" />
                <shield:GridColumn Field="Category" />
                <shield:GridColumn Field="Date" />
                <shield:GridColumn Field="Available" />
            </Columns>
        </shield:ShieldGrid>
    
    
    protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    var dt = new DataTable();
                    dt.Columns.Add(new DataColumn("Id", typeof(int)));
                    dt.Columns.Add(new DataColumn("Name", typeof(string)));
                    dt.Columns.Add(new DataColumn("Category", typeof(int)));
                    dt.Columns.Add(new DataColumn("Date", typeof(DateTime)));
                    dt.Columns.Add(new DataColumn("Available", typeof(bool)));
    
                    var row = dt.NewRow();
                    row["Id"] = 1;
                    row["Name"] = "test";
                    row["Category"] = 2;
                    row["Date"] = DateTime.Now;
                    row["Available"] = true;
                    dt.Rows.Add(row);
    
                    var source = (from r in dt.AsEnumerable()
                                  select new
                                  {
                                      Id = r["Id"],
                                      Name = r["Name"],
                                      Category = r["Category"],
                                      Date = r["Date"],
                                      Available = r["Available"],
                                  }).ToList();
                    var script = "window.testData = " + Shield.Mvc.UI.Common.Serialization.JavaScriptSerializer.Serialize(source);
                    ClientScript.RegisterClientScriptBlock(this.GetType(), "TableData", script, true);
                }
            }
    

    【讨论】:

    • 感谢您的回答!是否有来自 Shield.Web.UI 的方法可以执行此行,或者我还必须下载 ShieldUI ASP.NET MVC 试用插件?:var script = "window.testData = " + Shield.Mvc.UI.Common。序列化.JavaScriptSerializer.Serialize(source);我的应用程序是一个网络表单应用程序。
    • 我已经添加了对 Shield.Mvc.UI 包的引用。源变量在后面的代码中正确填充: window.testData =[{dfCategory:"1",dfActivityID:"test",dfActivityName:"2"}] 但它没有显示在 aspx 页面上。我已经用 aspx 页面中的代码更新了原始问题,你能检查一下是否还有什么遗漏吗?谢谢!
    • 运行时会添加到aspx页面,不用担心。只需将 Datasource 的 Data 属性设置为 testData(变量的名称),如示例中所示。
    • 关于序列化你可以自己做序列化器,目标是将列表转换为json。因为 ShieldUI 已经部署和公开了这样的功能(但在 Mvc 部分),所以我使用了它。
    【解决方案2】:

    您还可以将数据表转换为数组并将其分配给 shieldDataSource。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-23
      • 2019-11-03
      • 1970-01-01
      • 2014-05-31
      • 1970-01-01
      相关资源
      最近更新 更多