Hi 各位大老,
我又又又來發問了,
前幾次的問題雖然都沒有解決,但我還是試了各種方法處理。
這次是離成功應該算最後一哩路吧!?
我有直接下載datatables.net提供的範例,並且成功做出可編輯的datatable。
但我還是想搬到我的專案內處理,
可是儘管我將程式簡化,搬到我的專案,卻仍然無法顯示資料。
我的Index寫法幾乎是將程式碼照搬到我的程式中,
除了必須要連結的js,
還包含resources/syntax/shCore.js、demo.js、editor-demo.js
並且寫法也是dt_demo.init()以及jquery:function()、vanilla: function()
這樣做專案中可使用的部分有
1.資料庫連線,
2.新增資料的按鈕,可以成功新增資料並回傳資料庫
3.表單樣式的套用
無法使用的只有資料表的顯示,
網頁的Console回傳的訊息是:
Uncaught TypeError: Cannot read properties of undefined (reading 'length')
at jquery.dataTables.min.js:4:33087
如果將上述內容移除,使用 $(document).ready(function () {內容跟網頁範例一樣}
https://editor.datatables.net/examples/inline-editing/tabControl.html
則會顯示:Uncaught TypeError: $(...).DataTable is not a function,
但是新增資料按鈕或是版面樣式套用也會一並失效。
我有按照網頁的介紹做設定處理,但仍有小部分無法一樣。
我不確定是否仍是設定問題,還是跟錯誤訊息一樣是Jquery的問題。
想跟各位大老請教
1.有沒有大老可以提供網路上使用datatables的成功範例(包含編輯...)讓我參考
2.我目前專案使用的是 .NET6.0 的版本,跟原網站的版本有差異。
例如:
1.沒有Startup.cs
2.View的副檔名是cshtml(原網站是html)
3.Program.cs是整體內容差異比較大;
範例中的Main()方法中,
我只能擷取下列程式貼上,其餘設定都是自動產生的內容。
DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance);
範例:
public static void Main(string[] args)
{
// Register the factory
// In a "real" project you would only use one of these - but the demo package for
// Editor supports multiple database types.
var dbType = Environment.GetEnvironmentVariable("DBTYPE");
if ( dbType == "sqlserver" ) {
DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance);
}
else if ( dbType == "mysql" ) {
DbProviderFactories.RegisterFactory("MySql.Data.MySqlClient", MySqlClientFactory.Instance);
}
else if ( dbType == "postgres" ) {
DbProviderFactories.RegisterFactory("Npgsql", NpgsqlFactory.Instance);
}
else if ( dbType == "sqlite" ) {
DbProviderFactories.RegisterFactory("Microsoft.Data.Sqlite", SqliteFactory.Instance);
}
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
我的專案:
using System.Data.SqlClient;
using System.Data.Common;
DbProviderFactories.RegisterFactory("System.Data.SqlClient", SqlClientFactory.Instance);
var builder = WebApplication.CreateBuilder(args);
// Add services to the container.
builder.Services.AddControllersWithViews();
var app = builder.Build();
// Configure the HTTP request pipeline.
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Home/Error");
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthorization();
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
app.Run();
最後就是controller,
因為我是要在首頁就顯示資料,所以我是寫在HomeController,
除去驗證的部分,大部分寫法都一樣,
只是在return View上複製範例的代碼,
資料庫也有成功連線。
using Microsoft.AspNetCore.Mvc;
using PO_Management.Models;
using System;
using System.Collections.Generic;
using System.Data.Common;
using DataTables;
using Microsoft.Extensions.Configuration;
namespace PO_Management.Controllers
{
public class HomeController : Controller
{
public IActionResult Index()
{
return View();
}
[Route("api/sign")]
[HttpGet]
[HttpPost]
public ActionResult Sign()
{
var dbType = Environment.GetEnvironmentVariable("DBTYPE");
var dbConnection = Environment.GetEnvironmentVariable("DBCONNECTION");
using (var db = new Database(dbType, dbConnection))
{
var response = new Editor(db, "Po_sign", "rid")
.Model<Po_sign>()
.Field(new Field("uid"))
.Field(new Field("signname"))
.Field(new Field("stage"))
.Field(new Field("price"))
.Field(new Field("cname"))
.TryCatch(true)
.Process(Request)
.Data();
return Json(response);
}
}
}
}
但最終就是搞不清楚還有哪裡需要改,
難道真的要去改jquery嘛!?
datatable可以編輯的功能不是需要付費嗎?
不用吧!?官網有全範例可以下載耶。
我寫信給官網的時候,他也是叫我下載後跟著官網的介紹研究
https://editor.datatables.net/download/index
Start A Free 15 Day Trial
您有說明是要使用Editor功能嗎?
算有吧!?
我信件是直接問editing的問題
他回覆就是下載範例並且跟著指示做。
不過經過你這樣說,確實有找到可以付費購買的地方。
但如果問題可以解決,我不介意購買自己使用
上面有介紹到如果購買後許可證是永久的