Aug 26, 2013, 8:48 AM
[CLOSED] add data to store in code behind does not work
I want to upload a excel , save to server , then read the file , then load data in the file to the gridpanel .
how , data can not load to the store , please check my code.
how , data can not load to the store , please check my code.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm5.aspx.cs" Inherits="TobrosCWT.test.WebForm5" %>
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="TobrosTools" %>
<!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>
<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
if (!X.IsAjaxRequest)
{
this.store1.DataSource = new object[]
{
new object[]{"1","张三"},
new object[]{"2","李四"}
};
}
}
protected void uploadAfile(object sender, DirectEventArgs e)
{
string tpl = "Uploaded file: {0}<br/>Size: {1} bytes";
if (this.FileUploadField1.HasFile)
{
Random ran = new Random();
string sNewName = DateTime.Now.ToString(@"yyyy-MM-dd-HH-mm-ss") + ran.Next(100, 999)
+ Path.GetExtension(FileUploadField1.PostedFile.FileName);
string strPath = Server.MapPath("~/Uploads/" + System.DateTime.Now.Year.ToString() + "/" + sNewName);
this.FileUploadField1.PostedFile.SaveAs(strPath);
DataSet excelData = ExcelTool.LoadDataFromExcel(strPath);
var gp_store = Ext.Net.X.GetCmp<Store>("store1");
for (int i = 0; i < excelData.Tables[0].Rows.Count; i++)
{
DataRow dr = excelData.Tables[0].Rows[i];
string id = dr[0].ToString();
string name = dr[1].ToString();
gp_store.Add(new object[] { id, name });
}
gp_store.Reload();
}
else
{
X.Msg.Alert("消息", "上传失败");
return;
}
}
</script>
</head>
<body>
<form id="form1" runat="server">
<ext:ResourceManager runat="server"></ext:ResourceManager>
<ext:GridPanel runat="server">
<TopBar>
<ext:Toolbar runat="server">
<Items>
<ext:FileUploadField ID="FileUploadField1" runat="server" ButtonText="导入excel" ButtonOnly="True" Icon="PageExcel">
<DirectEvents>
<Change OnEvent="uploadAfile"></Change>
</DirectEvents>
</ext:FileUploadField>
</Items>
</ext:Toolbar>
</TopBar>
<Store>
<ext:Store runat="server" ID="store1">
<Model>
<ext:Model runat="server">
<Fields>
<ext:ModelField Name="id"></ext:ModelField>
<ext:ModelField Name="name"></ext:ModelField>
</Fields>
</ext:Model>
</Model>
</ext:Store>
</Store>
<ColumnModel>
<Columns>
<ext:Column runat="server" DataIndex="id" Text="编号"></ext:Column>
<ext:Column runat="server" DataIndex="name" Text="名称" Flex="1"></ext:Column>
</Columns>
</ColumnModel>
</ext:GridPanel>
</form>
</body>
</html>
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.OleDb;
using System.Linq;
using System.Text;
using Ext.Net;
using Microsoft.Office.Interop.Excel;
namespace TobrosTools
{
public static class ExcelTool
{
public static DataSet LoadDataFromExcel(string filePath)
{
DataSet OleDsExcle = new DataSet();
try
{
string strConn;
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + filePath + ";Extended Properties='Excel 8.0;HDR=False;IMEX=1'";
OleDbConnection OleConn = new OleDbConnection(strConn);
OleConn.Open();
String sql = "SELECT * FROM [Sheet1$]";//可是更改Sheet名称,比如sheet2,等等
OleDbDataAdapter OleDaExcel = new OleDbDataAdapter(sql, OleConn);
OleDaExcel.Fill(OleDsExcle, "Sheet1");
OleConn.Close();
}
catch (Exception err)
{
X.Msg.Alert("消息", "数据绑定Excel失败!失败原因:" + err.Message).Show();
}
return OleDsExcle;
}
}
}
Last edited by Daniil; Sep 03, 2013 at 5:01 AM.
Reason: [CLOSED]