我在Internet Explorer上的角度应用程序有问题.它运行无处不在(Chrome,Mozilla,Edge),但在IE上.
我已经在Developer Explorer中分析了错误,并返回错误发生在以下行:
myDataSet[index - 1].data = Array.from(tmp);
这是我得到的以下错误消息:
Object does not support property or method from at Anonymous function....(etc.)
我在那里做的是我有一个包含以下数据的Set()
命名tmp
:
之后我只是从这里创建一个简单的数组对象Set
.
我怎么解决这个问题?
编辑
根据建议我已将以下代码添加到我的应用程序:
if (!Array.from) {
Array.from = (function () {
var toStr = Object.prototype.toString;
var isCallable = function (fn) {
return typeof fn === 'function' || toStr.call(fn) === '[object Function]';
};
var toInteger = function (value) {
var number = Number(value);
if (isNaN(number)) { return 0; }
if (number === …
Run Code Online (Sandbox Code Playgroud) 我正在尝试格式化DateTime
结果并将其显示给用户当前设备语言环境中的用户。
目前我可以显示整个DateTime
如下:
2018-10-08 16:08:37.464112
或者通过指定这样的确切格式:
DateFormat("dd.MM.yyyy").format(DateTime.now())
Run Code Online (Sandbox Code Playgroud)
结果如下:
08.10.2018
我对这个解决方案的问题是,虽然这种格式在欧盟可能是可以接受的;在例如美国(和许多其他国家/地区),他们习惯于使用不同的日期格式,例如
10/08/2018
我的问题是:如何以当前语言环境的格式仅将日期(而不是时间)返回给用户?
答:
需要检索当前语言环境并将其传递给格式函数。我正在使用自定义本地化类,但使用开箱即用的解决方案,它看起来像这样:
DateFormat.yMMMd(Localizations.localeOf(context)).format(result);
Run Code Online (Sandbox Code Playgroud) 我有一个绑定的DatGrid var Result_Full = new ObservableCollection<IP_DataRow>()
.这是一个包含多个字符串和双变量的简单类.没什么难的.
我所做的是,我读了一个Excel文件(使用Telerik RadSpreadProcessing),它将行解析到我的类中.我在一个线程上执行此操作,以便不阻止UI.我遇到了一些问题:
1)我不能ref
在读取excel文件的长进程中使用关键字(因为Result_Full是绑定到DataGrid的公共属性),但是我必须创建临时ObservableCollection<IP_DataRow>()
值,其中放置值.完成该过程后,我运行以下脚本来复制值:
foreach (var item in tmpFull)
{
InvokeOnUIThread(() =>
{
Result_Full.Add(item);
});
}
Run Code Online (Sandbox Code Playgroud)
我想做的是,能够实时查看(如果可能)如何将项目添加到我的DataGrid中的集合中.
当我使用.Net 4.5时,我尝试BindingOperations.EnableCollectionSynchronization
按照其他帖子的建议实现,但我无法弄清楚如何将我的UI模型集合Result_Full绑定到进程中临时使用的.
2)即使使用当前设置,当我(在我的UI下)移动到包含DataGrid的我的Tab(我的DataGrid在不同的TabPage上)时,我尝试使用上面提到的代码将新项添加到集合中,它返回错误说:调用线程无法访问此对象,因为另一个线程拥有它.,这是相当奇怪的,因为InvokeOnUIThread只不过是Dispatcher.Invoke()
,它应该是线程安全的?
任何帮助将受到高度赞赏.
编辑:显示更多代码:
这是我从BackgroundWorker调用的过程:
public void ProcessFile()
{
var tmpError = new ObservableCollection<IP_DataRow>();
var tmpFull = new ObservableCollection<IP_DataRow>();
var _reader = new IP_ExcelReader(sExcelPath, ref tmpError, ref tmpFull);
string sResult = _reader.ReadExcelFile();
if (sResult != string.Empty)
{
System.Windows.MessageBox.Show("Error processing selected …
Run Code Online (Sandbox Code Playgroud) 我正在尝试为我的应用程序实现自定义注销解决方案,无论用户当前在哪里,一旦Logout button
点击,应用程序将导航回Login page
.
我的想法是,与其监听每个组件的状态更改,不如在主组件上使用一个监听器 -> MyApp
。
为简单起见,我将项目精简到最低限度。这是我的 Profile 类的样子:
class Profile with ChangeNotifier {
bool _isAuthentificated = false;
bool get isAuthentificated => _isAuthentificated;
set isAuthentificated(bool newVal) {
_isAuthentificated = newVal;
notifyListeners();
}
}
Run Code Online (Sandbox Code Playgroud)
现在,在 下Main
,我已注册此提供程序如下:
void main() => runApp(
MultiProvider(
providers: [
ChangeNotifierProvider(
create: (_) => Profile(),
)
],
child: MyApp(),
),
);
Run Code Online (Sandbox Code Playgroud)
最后是MyApp
组件:
class MyApp extends StatelessWidget {
// This widget is the root of your application.
@override
Widget build(BuildContext …
Run Code Online (Sandbox Code Playgroud) 从PDF文件中读取数据时,我遇到使用iTextSharp的问题.我想要实现的是只读取PDF页面的特定部分(我想只检索位于恒定位置的地址信息).我在阅读以下所有页面时看到了iTextSharp的用法:
StringBuilder text = new StringBuilder();
if (File.Exists(fileName))
{
PdfReader pdfReader = new PdfReader(fileName);
for (int page = 1; page <= pdfReader.NumberOfPages; page++)
{
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);
currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
text.Append(currentText);
}
pdfReader.Close();
}
return text.ToString();
Run Code Online (Sandbox Code Playgroud)
但是我怎样才能将它限制在特定的位置?我愿意使用任何东西,甚至是OCR技术,因为将来某些文件可能会成为图像(但此时不是必需的).这个项目仅适合我,所以没有商业用途.
谢谢!
我试图弄清楚如何在UWP下进行数据验证,但根据我发现的情况,基本上没有什么我可以实现的.
因此,我试图实现我的自定义验证逻辑.我现在遇到的问题是,我在一个TextBlock
而不是直接在TextBox
包含数据错误的特定信息下显示错误信息.
这就是我现在所做的:
public class Customer : ViewModel
{
private string _Name = default(string);
public string Name { get { return _Name; } set { SetProperty(ref _Name, value); OnPropertyChanged("IsValid"); } }
private string _Surname = default(string);
public string Surname { get { return _Surname; } set { SetProperty(ref _Surname, value); OnPropertyChanged("IsValid"); } }
private DateTime _DateOfBirth = default(DateTime);
public DateTime DateOfBirth { get { return _DateOfBirth; } set { SetProperty(ref _DateOfBirth, value); OnPropertyChanged("IsValid"); } }
public …
Run Code Online (Sandbox Code Playgroud) 我试图从Activity本身(而不是来自适配器)监听我的Recycler视图上的行点击(项目点击).
我的适配器到目前为止如下所示:
public class ListMiestnostiAdapter extends RecyclerView.Adapter<ListMiestnostiAdapter.ViewHolder>{
private List<Miestnost> data;
// you provide access to all the views for a data item in a view holder
public static class ViewHolder extends RecyclerView.ViewHolder {
public ViewDataBinding binding;
public ViewHolder(ViewDataBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
public void bind(Object obj){
binding.setVariable(BR.obj, obj);
binding.executePendingBindings();
}
}
public ListMiestnostiAdapter(List<Miestnost> data) {
this.data = data;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// create a new view
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
ActivityListMiestnostiRowBinding …
Run Code Online (Sandbox Code Playgroud) android android-adapter android-recyclerview android-databinding
我正在尝试动态构建我的一部分ListView.children[]
,但我无法将它们推送到已经存在的数组。这是我的简化代码:
Widget buildNavigationDrawer(BuildContext context) {
return Drawer(
child: ListView(
// Important: Remove any padding from the ListView.
padding: EdgeInsets.zero,
children: <Widget>[
DrawerHeader(...code for header of drawer),
_buildUserGroups(context).map((Widget item)=> item),
ListTile(
leading: Icon(Icons.account_circle),
title: Text('Settings'),
onTap: () {
Navigator.push(
context,
FadeTransitionRoute(
builder: (context) => MainSettingsPage()));
},
),
],
),
);
}
Run Code Online (Sandbox Code Playgroud)
其中_buildUserGroups()
函数看起来像这样(简化):
List<Widget> _buildUserGroups(BuildContext context) {
var userGroup = List<Widget>();
userGroup.add(Text("Users"));
for (var i = 0; i < 5; i++) {
userGroup.add(Text("User " + i.toString()));
}
return …
Run Code Online (Sandbox Code Playgroud) 我有更新单个项目的问题,List<string>
使用LINQ匹配不同的字符串.假设我有一个名单列表,我想检查名单"John"是否已存在于我的列表中.如果是,则将"John"替换为"Anna".
这是我做的:
var sItem = myList.First(n=> n == "John"); //I am 100% sure that John exists, that\s why I use .First
sItem = "Anna";
Run Code Online (Sandbox Code Playgroud)
这是它应该如何工作,但当我在进程后检查我的List(myList)时,原始项目仍然存在(我仍然可以看到John,而不是Anna).我也尝试在List上实现INotifyChanged,但仍然没有结果.
我究竟做错了什么?
我有以下课程:
public class SubStredisko
{
public string Name { get; set; }
public string Code { get; set; }
public VyplatnePasky VyplatnaPaska { get; set; }
public MzdoveNaklady MzdoveNaklady { get; set; }
public Poistne Poistne { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我有两个SubStredisko
项目,其中一个肯定是null
.我想要做的是,我有一个单独的方法,它做了一些处理SubStredisko
,如更改值VyplatnaPaska
等.这是它的样子:
private static void VyplatnePasky_Items(ref Stredisko stredisko, XElement myElement)
{
//some logic here
}
Run Code Online (Sandbox Code Playgroud)
我现在尝试做的事情(我遇到的问题)是使用?:
运算符以下列方式调用此方法:
VyplatnePasky_Items((sPracovisko == null) ? ref sPracovisko_Dohodari : ref sPracovisko,xElement);
Run Code Online (Sandbox Code Playgroud)
但它突出显示sPracovisko_Dohodari
并sPracovisko
出现以下错误: …