英文:
Open HTML link from devexpress's ASPxSpreadsheet
问题
正如标题所示,我想要打开一个HTML链接,但我不确定我目前的做法是否正确。我正在使用超链接,但似乎对我不起作用。以下是我正在使用的代码片段:
CellRange nameFileCellRange = secondWorksheet.Cells["C7"];
nameFileCellRange.Value = "Drawing: " + fileName;
Hyperlink nameFileHyperlink = secondWorksheet.Hyperlinks.Add(nameFileCellRange, "javascript:openFile(" + filename + ")", true, filename);
nameFileHyperlink.TooltipText = "open";
这是JavaScript函数:
function openFile(fileName) {
console.log("hi");
var _url = "./TraceabilityNP.aspx?id=" + encodeURIComponent(fileName);
var _name = "VIEWFILE"
var w = 600;
var h = 400;
var x = window.open(_url, _name, "width=" + w + ", height=" + h);
x.focus();
}
请问可能出错的原因是什么?或者还有其他方法可以尝试吗?
英文:
As indicated in the title, I would like to open a HTML link, but I'm uncertain if what I'm currently doing is correct. I'm using a hyperlink, but it doesn't seem to be working for me. Here's the code snippet I'm using:
CellRange nameFileCellRange = secondWorksheet.Cells["C7"];
nameFileCellRange.Value = "Drawing: " + fileName;
Hyperlink nameFileHyperlink = secondWorksheet.Hyperlinks.Add(nameFileCellRange, "javascript:openFile(" + filename + ")", true, filename);
nameFileHyperlink.TooltipText = "open";
And here's the JavaScript function:
function openFile(fileName) {
console.log("hi");
var _url = "./TraceabilityNP.aspx?id=" + encodeURIComponent(fileName);
var _name = "VIEWFILE";
var w = 600;
var h = 400;
var x = window.open(_url, _name, "width=" + w + ", height=" + h);
x.focus();
}
Could you please let me know what might be going wrong? Alternatively, are there any other approaches I could try?
答案1
得分: 2
请注意以下来自官方DevExpress网站的信息:
支持的方法在这里列出(请注意没有URL):
更新1(唯一单元格):
由于您可以使用Devex客户端事件(纯JavaScript),您需要做两件事:
1. 在服务器端(请注意虚拟URI)
Cell cell = worksheet1.Cells["B4"]; //这是为一个单元格,您可以使用CellRange用于N个单元格。
var fileUrl = "https://github.com/DevExpress-Examples/winforms-spreadsheetcontrol-api-part1/blob/23.1.2%2B/Readme.md";
worksheet1.Hyperlinks.Add(cell, fileUrl, true, "DevExpress Spreadsheet Repo");
2. 在客户端
使用工作表的HyperlinkClick客户端事件,并定义如下(请注意,我在#1中使用了虚拟URI):
<ClientSideEvents
HyperlinkClick="function(s, e) {
var _url=e.targetUri;
var _name = 'VIEWFILE'
var w = 600;
var h = 400;
var x= window.open(_url,_name,'width=' + w + ',height=' + h);
x.focus();
e.handled = true;
}"
/>
更新2(单元格范围):
1. 在服务器端(请注意虚拟URI)
CellRange nameFileCellRange = secondWorksheet.Range["C7"]; //请注意,您可以指定一系列单元格,例如["C7:C10"]
string url= "https://github.com/DevExpress-Examples/winforms-spreadsheetcontrol-api-part1/blob/23.1.2%2B/Readme.md";
nameFileCellRange.Value = "Drawing: " + url;
Hyperlink nameFileHyperlink = secondWorksheet.Hyperlinks.Add(nameFileCellRange, url, true, nameFileCellRange.Value.ToString());
nameFileHyperlink.TooltipText = "open";
2. 在客户端(实际上与第一个更新的单元格相同的代码)
使用工作表的HyperlinkClick客户端事件,并定义如下(请注意,我在#1中使用了虚拟URI):
<ClientSideEvents
HyperlinkClick="function(s, e) {
var _url = e.targetUri;
var _name = 'VIEWFILE';
var w = 600;
var h = 400;
var x= window.open(_url,_name,'width=' + w + ',height=' + h);
x.focus();
e.handled = true;
}"
/>
英文:
Please take into account the following information from official Devexpress site:
ASPxSpreadsheet does not allow opening files using URL
The supported methods are listed here (notice NO Url):
UPDATE 1 (Unique Cell):
Since you can use devex clientsideevents (pure javascript) what you need to do are two things:
1. On the server side (notice the dummy URI)
Cell cell = worksheet1.Cells["B4"]; //This is for one cell you can use CellRange for N cells.
var fileUrl = "https://github.com/DevExpress-Examples/winforms-spreadsheetcontrol-api-part1/blob/23.1.2%2B/Readme.md";
worksheet1.Hyperlinks.Add(cell, fileUrl, true, "DevExpress Spreadsheet Repo");
2. On the client
Use the HyperlinkClick client side event for the worksheet and define it as follows(notice im using a dummy URI previously loaded on #1):
<ClientSideEvents
HyperlinkClick="function(s, e) {
var _url=e.targetUri;
var _name = 'VIEWFILE';
var w = 600;
var h = 400;
var x= window.open(_url,_name,'width=' + w + ',height=' + h);
x.focus();
e.handled = true;
}"
/>
UPDATE 2 (Cell Range):
1. On the server side (notice the dummy URI)
CellRange nameFileCellRange = secondWorksheet.Range["C7"]; //Notice you can specify a range of cells ir ["C7:C10"]
string url= "https://github.com/DevExpress-Examples/winforms-spreadsheetcontrol-api-part1/blob/23.1.2%2B/Readme.md";
nameFileCellRange.Value = "Drawing: " + url;
Hyperlink nameFileHyperlink = secondWorksheet.Hyperlinks.Add(nameFileCellRange, url, true, nameFileCellRange.Value.ToString());
nameFileHyperlink.TooltipText = "open";
2. On the client (actually is the same code as first update with single cell)
Use the HyperlinkClick client side event for the worksheet and define it as follows(notice im using a dummy URI previously loaded on #1):
<ClientSideEvents
HyperlinkClick="function(s, e) {
var _url = e.targetUri;
var _name = 'VIEWFILE';
var w = 600;
var h = 400;
var x= window.open(_url,_name,'width=' + w + ',height=' + h);
x.focus();
e.handled = true;
}"
/>
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论