求解前台怎么接收数据,和后台怎么传数据给前台?

Beginner_hui 2016-12-09 07:37:35



我要在前台显示一个报表,在div里面显示 然后用到的heighchars的报表模板,现在只差怎么传数据了,
求解怎么弄,各位大神教教。


//这个是我的后台代码;
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class Repair_December : System.Web.UI.Page
{


private PageManage PageMg;
protected void Page_Load(object sender, EventArgs e)
{
PageMg = new PageManage(this);
string pageName = Request.Url.AbsolutePath.Substring(Request.Url.AbsolutePath.LastIndexOf("/"));
if (this.FindControl("ConLayer1") == null && this.FindControl("ConTitle1") != null)
{
ConTitle1.ConLayer = false;
}
ConLayer1.AddControl(this.Panel1);
//add by my 20140220
ConTitle1.Title = "Repair report";
ConTitle1.ShowExcelButton = true;
ConTitle1.OnFormatExcel += new EventHandler(ConTitle1_OnFormatExcel);
//add by my 20140220

ConLayer1.BindDateInputBox(txt_DayFrom, -1);
ConLayer1.BindDateInputBox(txt_DayTo, 0);
ConLayer1.HideLayer();
ConLayer1.OnSubmitQuery += new ConLayer.OnSubmitQueryHandler(ConLayer1_OnSubmitQuery);
if (!IsPostBack)
{
if (PageMg.CurrentUser.BU != "SAVBUTEST")
{
Response.Redirect("../errormessage.aspx?err='错误ㄑD10 3F(MFGII)ㄏノ' ");
}
ConLayer1.ShowLayer();
}
}


protected void ConLayer1_OnSubmitQuery(object sender, EventArgs e)
{
string strStartDate = this.txt_DayFrom.Value.Trim().Replace("'", "''");
string strEndDate = this.txt_DayTo.Value.Trim().Replace("'", "''");

string strSQL = string.Format(@"SELECT * FROM jsondatatable WHERE data BETWEEN '{0}' AND '{1}' ", strStartDate, strEndDate);
DataSet ds = GetData(strSQL);
EditGrid1.Visible = true;//显示
EditGrid1.DataSource = ds.Tables[0];//数据绑定
EditGrid1.GridColumnHidden = new int[] { 0 };//
EditGrid1.PageSize = 200;
if (EditGrid1.BindGrid(true))//判断
{
this.ConLayer1.HideLayer();
ConTitle1.AddRecountCount(EditGrid1.DataSource.Rows.Count);
Response.Write(EditGrid1.DataSource.Rows.Count);

}
if (ds.Tables[0].Rows.Count == 0)
{
Response.Write("No Data");
Response.End();
}
}
//连接数据库
protected DataSet GetData(string strSQL)
{
DataAccess conn = DataAccessFactory.CreateDataAccess(Config.DatabaseConnection(PageMg.CurrentUser.BU));
DataSet ds = new DataSet();
try
{
conn.Open();
ds = conn.ExecuteDataset(strSQL);
conn.Close();
}
catch (Exception ex)
{
Response.Redirect("../errormessage.aspx?err='" + ex.GetBaseException().Message.ToString().Replace("\n", "").Replace("\'", "").Replace("\r", "") + "'");
}
finally
{
conn.Close();
}
return ds;
}
//下载
private void ConTitle1_OnFormatExcel(object sender, System.EventArgs e)
{
//System.Data.DataTable dt = Bind("", "");
DataTable dt = this.EditGrid1.DataSource;
if (dt.Rows.Count > 0)
{
ExcelSheet elsheet = new ExcelSheet();
elsheet.Title = "Repair eport";
elsheet.dataTable = dt;
elsheet.ColumnAutoFit = true;
string FileName = ConTitle1.getTempFileName(true) + ".xls";
elsheet.ExporttoFile(FileName);
ConTitle1.DownLoadFile(FileName);
}
}
}




然后这个是我的前台代码


<script type="text/javascript">
$(function () {
getjosndatas();

});
function getjosndatas() {
var inputnum = [];
var outputnum = [];
var strStartDate=document.getElementById("<%=txt_DayFrom.ClientID %>").value;
var strEndDate=document.getElementById("<%=txt_DayTo.ClientID %>").value;
var BU="<%=((LoginUser)Session["USER"]).BU %>";
alert(strEndDate);
alert(strStartDate);
}
function heightchar(){
$('#container').highcharts({
chart: {
type: 'line'
},
title: {
text: 'Monthly Average Temperature'
},
subtitle: {
text: 'Source: WorldClimate.com'
},
xAxis: {
categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
},
yAxis: {
title: {
text: 'Temperature (C)'
}
},
plotOptions: {
line: {
dataLabels: {
enabled: true
},
enableMouseTracking: false
}
},
series: [{
name: 'Tokyo',
data: [7.0, 6.9, 9.5, 14.5, 18.4, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
}, {
name: 'London',
data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
}]
});
}
</script>
</head>
<body>
<form id="form1" runat="server">
<uc1:ConTitle ID="ConTitle1" runat="server"></uc1:ConTitle>
<uc1:ConLayer ID="ConLayer1" runat="server"></uc1:ConLayer>
<uc1:EditGrid ID="EditGrid1" runat="server"></uc1:EditGrid>
<asp:Panel ID="Panel1" runat="server" CssClass="ConLayerPanel">
<table class="paneltable">
<tr class="tr">
<td class="td" rowspan="2" align="left">
RepairDate:</td>
<td class="td">
<center>
From</center>
</td>
<td class="td2">
<input runat="server" id="txt_DayFrom" type="text" readonly="readonly" />
</td>
</tr>
<tr class="tr">
<td class="td">
<center>
To</center>
</td>
<td class="td2">
<input runat="server" id="txt_DayTo" type="text" readonly="readonly" />
</td>
</tr>
</table>
</asp:Panel>
</form>
<div id="container" style="min-width: 310px; height: 301px; margin: 0 auto 0 405px; background:red; width: 917px;"></div>
</body>
...全文
2415 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
另外,多说一个重要事实。你会看到我删除了 <form runat="server" />。 如果你是根本不回发的,那么第一时间删除它。你的页面照样可以使用 usercontrol,没有问题。但是你只能使用不回发的服务器端控件了,你的页面速度会比传统的 asp.net webform 页面轻快很多!
  • 打赏
  • 举报
回复
先掌握一个统一、干净的编程规范,方便开发和调试。不要到处去写什么 document.getElementById("<%=txt_DayTo.ClientID %>") 这类代码,这类代码是次要的。当你调试前端的时候,你会给一套前端测试数据,例如上面的 cname 或者 def,你先用一套“假数据”在页面上调试好,然后才让 asp.net 给它传数据。 所以,保持干净、简单,只在一个地方传初始化数据,有利于后续开发工程。
  • 打赏
  • 举报
回复
引用 1 楼 Beginner_hui 的回复:
后面的heighchars函数只是加上去附了自己的值,还没有传数据,求解怎么后台怎么传值到前台,和前台怎么接收值,
页面刷新的时候,如果要将asp.net 对象的值统一、干净地写到页面脚本中,你可以使用脚本的“全局变量”来保存。 我给你写一个例子。首先创建一个页面 TestRoute.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestRoute.aspx.cs" Inherits="TestRoute" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    城市=<asp:Label ID="Label1" runat="server" Text="Label" onclick="abc(cname);"></asp:Label>

    <script type="text/javascript">
        var cname = '<%= cname %>';
        
        function abc(n) {
            window.alert(n);
        }
    </script>
</body>
</html>
using System;

public partial class TestRoute : System.Web.UI.Page
{
    protected string cname;

    protected void Page_Load(object sender, EventArgs e)
    {
        cname = (string)RouteData.Values["cname"];
        this.Label1.Text = cname;
    }
}
你可以看到这里接受一个参数 cname,然后把它一两种方式显示。一种是文本方式显示在页面上,另一种是将其文本值输出成了 javascipt 全局变量赋值代码的一部分。 然后在 global.asax 中设置路由:
<%@ Application Language="C#" %>
<%@ Import Namespace="System.Web.Routing" %>

<script RunAt="server">

    void Application_BeginRequest(object sender, EventArgs e)
    {
    }

    void Application_Start(object sender, EventArgs e)
    {
        RouteTable.Routes.MapPageRoute("我随便创建的  哈哈", "City/{*cname}", "~/TestRoute.aspx");
        RouteTable.Routes.MapPageRoute("我随便创建的2  哈哈", "{*cname}", "~/TestRoute.aspx");
    }
</script>
接下来,你从浏览器上测试“/city/昆明"或者干脆直接访问"/厦门",你会看到页面显示了城市名,而且用鼠标点击城市名会执行 javascript 代码,其给出的 cname 值就是你从 asp.net 对象中赋值给前端的。 你可以统一地设置值。例如你可以这样写
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TestRoute.aspx.cs" Inherits="TestRoute" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    城市=<asp:Label ID="Label1" runat="server" Text="Label" onclick="abc(cname);"></asp:Label>

    <script type="text/javascript">
        var cname = '<%= cname %>';

        var def= <%= defaultObject %>;
        
        function abc(n) {
            window.alert(n);
        }
    </script>
</body>
</html>
using System;

public partial class TestRoute : System.Web.UI.Page
{
    protected string cname;
    protected string defaultObject;

    protected void Page_Load(object sender, EventArgs e)
    {
        cname = (string)RouteData.Values["cname"];
        this.Label1.Text = cname;


        var x = new
        {
            _t = "随便创建一个对象测试啦",
            date = DateTime.Now.ToString(),
            a = 12345
        };
        var s = new System.Web.Script.Serialization.JavaScriptSerializer();
        defaultObject = s.Serialize(x);
    }
}
这里把后台的随便一个复杂的对象,序列化为 json 格式,然后粘贴到输出的 jaavscript 代码中。你可以打开浏览器端页面源代码看看,前端有一个叫做 def 的全局变量,可以随时在 js 中通过 def._t、def.a、def.date 这种形式来访问 jaavscript 对象。 只要你懂 javascript !
first_llz 2017-02-13
  • 打赏
  • 举报
回复
请问解决了吗,我也遇到 这个问题
Beginner_hui 2016-12-09
  • 打赏
  • 举报
回复
还是不太懂,因为我数据不知道要怎么弄。
弘毅致远 2016-12-09
  • 打赏
  • 举报
回复
getjosndatas josn是什么意思?好像有个json
  • 打赏
  • 举报
回复
页面加载的时候赋值 一个隐藏控件 好比 前台有个<uc1:ConLayer ID="ConLayer1" runat="server"></uc1:ConLayer> 这个空间,你获取他Id设置它属性一样 前台

<input  type="hidden" id="hidDate" runat="server" />
后台

hidDate.value  = "3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8";
JS

var _data = $('#hidDate').val();
或者 用$.ajax() 具体看网上接口
Beginner_hui 2016-12-09
  • 打赏
  • 举报
回复
后面的heighchars函数只是加上去附了自己的值,还没有传数据,求解怎么后台怎么传值到前台,和前台怎么接收值,

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧