Kendo UI没有附带本地化包.您只能选择仅设置数字和日期格式的文化文件,而不能选择小部件中显示的实际文本(例如:寻呼机文本 - 每页的项目数,下一页等,过滤器菜单(等于等),网格部分(在这里拖一列......)等)
要本地化小部件,必须在每个小部件的各个选项中传递一堆消息,以覆盖Kendo UI默认使用的消息.像这样的东西:
filterable: {
messages: {
info: "Título:", // sets the text on top of the filter menu
filter: "Filtrar", // sets the text for the "Filter" button
clear: "Limpar", // sets the text for the "Clear" button
// when filtering boolean numbers
isTrue: "é verdadeiro", // sets the text for "isTrue" radio button
isFalse: "é falso", // sets the text for "isFalse" radio button
//changes the text of the "And" and "Or" of the filter …
Run Code Online (Sandbox Code Playgroud) 我一直在努力解决这个问题,并且无法找到我的代码无法正确读取我已编写的TCP服务器的原因.我正在使用TcpClient
类及其GetStream()
方法,但有些东西没有按预期工作.操作块无限期(最后一次读取操作没有按预期超时),或者数据被裁剪(由于某种原因,读取操作返回0并退出循环,可能服务器响应速度不够快).这是实现此功能的三次尝试:
// this will break from the loop without getting the entire 4804 bytes from the server
string SendCmd(string cmd, string ip, int port)
{
var client = new TcpClient(ip, port);
var data = Encoding.GetEncoding(1252).GetBytes(cmd);
var stm = client.GetStream();
stm.Write(data, 0, data.Length);
byte[] resp = new byte[2048];
var memStream = new MemoryStream();
int bytes = stm.Read(resp, 0, resp.Length);
while (bytes > 0)
{
memStream.Write(resp, 0, bytes);
bytes = 0;
if (stm.DataAvailable)
bytes = stm.Read(resp, 0, resp.Length); …
Run Code Online (Sandbox Code Playgroud) 我想知道是否有一种正确的方法来检索一个对象,因为它在Realm for Android中具有主键.我知道这个方法objectForPrimaryKey
确实存在于Swift中,但在Realm for Android中似乎没有这样的对应物.我真的认为这样做realm.where(EventInfo.class).equalTo("id", eventInfo.id).findFirst();
看起来很浪费(至少它不是手腕友好的).我错过了一些方法吗?我目前正在使用Realm 1.0.1
以下类以极少的方式表示我的遗留数据库的真实场景.我可以添加新列,但这是我能做的全部,因为300多个表数据库被许多其他遗留应用程序使用,这些应用程序不会移植到NHibernate(因此不能从复合键迁移) :
public class Parent
{
public virtual long Id { get; protected set; }
ICollection<Child> children = new HashSet<Child>();
public virtual IEnumerable<Child> Children { get { return children; } }
public virtual void AddChildren(params Child[] children)
{
foreach (var child in children) AddChild(child);
}
public virtual Child AddChild(Child child)
{
child.Parent = this;
children.Add(child);
return child;
}
}
public class Child
{
public virtual Parent Parent { get; set; }
public virtual int ChildId { get; set; }
ICollection<Item> …
Run Code Online (Sandbox Code Playgroud) 背景:我想避免为我的主页创建一个备用布局,我想保持"主题机"区域和布局完好无损,实际上"主题"大多数都使用纯CSS.所以我需要有选择地将CSS定位到特定的"页面",包括,最重要的是,主页.最简单的方法是将一个类添加到包装整个布局的布局包装"div"中.我可以通过覆盖Document.cshtml文件向"body"元素添加一个类,但我真的认为在Layout.chstml文件中工作更加清晰,并利用Model.Classes将所需的CSS类添加到"开放"标签.
我现在正在做这样的事情:
string area = Model.DesignatedAreaField;
Model.Classes.Add(string.IsNullOrWhiteSpace(area) ? "home" : area);
Model.Id = "layout-wrapper";
var tag = Tag(Model, "div"); // using Tag so the layout div gets the classes, id and other attributes added to the Model
Run Code Online (Sandbox Code Playgroud)
我知道区域不会剪切,因为主页和其他页面都在同一区域,而Model.DesignatedAreaField实际上为主页或其他页面返回一个空字符串.所以,最后,上面的代码总是会生成以下标记(我在主页上显示3个tripels):
<div class="home tripel-123" id="layout-wrapper">
Run Code Online (Sandbox Code Playgroud)
我希望只有在显示主页时才能添加"home"CSS类.一些伪代码如下:
string wrapperCss = IsHomepage ? 'home' : Model.GetUrlPathOrSomethingUniqueForThePath();
Model.Classes.Add(wrapperCss);
Run Code Online (Sandbox Code Playgroud)
这将允许我,例如,使主要内容缩小并向右浮动,并将三角形放在其左侧(这就是主页设计应该如何,但我不想写一个完整的不同布局对于家庭,如果我可以用简单的,有针对性的CSS做同样的事情).
更新:连接Bertrand的答案
Bertrand的回答允许我根据URL为包装DIV添加一个类.他没有提到它(因为Orchard对他来说是第二天性:-)但是你必须在Layout.cshtml文件中添加一个include并相应地更改"my"代码:
@using Orchard.Utility.Extensions;
{
/* omitted for brevity, everything in between is the same as in the Theme's Machine layout file */
string area = WorkContext.HttpContext.Request.Path.HtmlClassify(); …
Run Code Online (Sandbox Code Playgroud) 我正在使用Glide加载图像,调整大小并通过a将其保存到文件中SimpleTarget<Bitmap>
.这些图像将上传到Amazon S3,但除此之外.我正在上传之前调整图像大小以节省尽可能多的用户带宽.对于我的应用程序需要1024像素宽的图像绰绰有余,所以我使用以下代码来实现这一点:
final String to = getMyImageUrl();
final Context appCtx = context.getApplicationContext();
Glide.with(appCtx)
.load(sourceImageUri)
.asBitmap()
.into(new SimpleTarget<Bitmap>(1024, 768) {
@Override
public void onResourceReady(Bitmap resource, GlideAnimation<? super Bitmap> glideAnimation) {
try {
FileOutputStream out = new FileOutputStream(to);
resource.compress(Bitmap.CompressFormat.JPEG, 70, out);
out.flush();
out.close();
MediaScannerConnection.scanFile(appCtx, new String[]{to}, null, null);
} catch (IOException e) {
e.printStackTrace();
}
}
});
Run Code Online (Sandbox Code Playgroud)
它几乎完美地工作,但生成的图像的大小不是1024像素宽.使用尺寸为4160 x 2340像素的源图像对其进行测试,得到的保存图像的尺寸为2080 x 1170像素.
我试着用打width
和height
参数传递到new SimpleTarget<Bitmap>(350, 350)
并用这些参数生成的图像尺寸为1040 X 585像素.
我真的不知道如何使Glide尊重传递的尺寸.事实上,我想按比例调整图像大小,以便将较大的尺寸(宽度或高度)限制为1024像素,较小的尺寸相应调整大小(我相信我必须找到获得原始图像的方法)尺寸,然后传递宽度和高度SimpleTarget
,但要做到这一点,我需要Glide尊重传递的宽度和高度!).
有没有人知道发生了什么?我正在使用Glide 3.7.0.
由于这个问题本身可能对尝试使用Glide调整大小和保存图像的人有用,我相信提供我的实际"解决方案"符合每个人的利益,该解决方案依赖于SimpleTarget …
我试图从API结果中解析IP地址,其中IPv4地址的四个中心中的每一个都以0(零)为前缀.像这样的东西:
127.000.000.001而不是127.0.0.1
我在尝试解析192.168.001.009时开始出现解析错误.它也失败了192.168.001.008,但适用于007,006,005到001!
它也失败了192.168.001.018,但适用于.017,.016降至010!
它适用于192.168.001.8或.8以及192.168.001.18和.19 ......
这是CLR中的错误吗?或者我错过了一些愚蠢的东西?
试一试:
IPAddress.Parse("192.168.001.007"); // works
IPAddress.Parse("192.168.001.87"); // works
IPAddress.Parse("192.168.001.008"); // throws exception
IPAddress.Parse("192.168.001.19"); // works
IPAddress.Parse("192.168.001.019"); // throws exception
// and so on!
Run Code Online (Sandbox Code Playgroud) 我已经接管了Orchard中List的渲染,以便能够创建自定义标记(我需要在列表的实际内容之前创建交互式导航).这是我目前正在使用的代码:
@using Orchard.DisplayManagement.Shapes;
@{
var list = Model.List;
var items = list.Items;
var count = items.Count;
var listTag = Tag(list, "ul");
listTag.AddCssClass("historia");
var index = 0;
}
<div class="produtos">
@foreach (var item in items)
{
var itemTag = Tag(item, "div");
itemTag.AddCssClass("item-" + index);
@itemTag.StartElement;
<h3>
@item.Title
</h3>
<p>@item.MyCustomTextField</p>
@itemTag.EndElement;
++index;
}
</div>
@Display(Model.List)
@Display(Model.Pager)
Run Code Online (Sandbox Code Playgroud)
它几乎可以工作......我无法访问列表项字段...我想获取标题并将其放入h3中,然后在其后的段落中放置一个自定义文本字段...我将使用CSS正确渲染此导航部件.在这个导航部分之后,我将调用标准列表渲染例程.
问题是@ item.Title产生一个null /空字符串.我想访问项目内容(没有双关语),其中包括一个自定义文本字段,该字段是将在"导航窗格"中显示的整个帖子的摘录.
Bertrand告诉我们如何使用博客文章来做到这一点:
@using Orchard.ContentManagement;
@{
IEnumerable<object> blogPosts =
Model.ContentItems.ContentItems;
}
@if (blogPosts == null || blogPosts.Count() < 1) {
<p>@T("No posts.")</p>
}
else …
Run Code Online (Sandbox Code Playgroud) 我有很多使用MIFARE的经验(自1996年以来,使用GEMPLUS制造的卡片时).我甚至编写了低级代码来模拟MIFARE卡......但是现在事情变得更简单,更高级别我无法使用Java,Android和Android Studio!我想我的时间会变得笨拙......
我所要做的就是在检测到MIFARE卡时启动应用程序.我知道可以这样做,因为我在我的设备中使用了NFC卡信息应用程序,它在MIFARE卡的存在下正确启动.我已经卸载它以确保唯一的NFC应用程序是我自己的.我试图遵循http://developer.android.com/guide/topics/connectivity/nfc/nfc.html和http://developer.android.com/guide/topics/connectivity上不太令人满意的文档./nfc/advanced-nfc.html.
问题是我的应用程序从未启动过.代码非常简单,AFAIK应该正常工作......这是app清单:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.nfctest.app" >
<uses-sdk android:minSdkVersion="10"/>
<uses-permission android:name="android.permission.NFC" />
<uses-feature android:name="android.hardware.nfc" android:required="true" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.nfctest.app.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
<intent-filter>
<action android:name="android.nfc.action.TECH_DISCOVERED"/>
</intent-filter>
<meta-data android:name="android.nfc.action.TECH_DISCOVERED"
android:resource="@xml/nfc_tech_filter" />
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
它按NDEF_DISCOVERED过滤,因为TECH_DISCOVERED不能单独工作.
这是nfc_tech_filter资源文件:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<tech-list>
<tech>android.nfc.tech.Ndef</tech>
<tech>android.nfc.tech.NdefFormatable</tech>
<tech>android.nfc.tech.MifareClassic</tech>
<tech>android.nfc.tech.MifareUltralight</tech>
</tech-list>
</resources>
Run Code Online (Sandbox Code Playgroud)
这是活动代码:
package com.example.nfctest.app;
import android.content.Intent; …
Run Code Online (Sandbox Code Playgroud) 这听起来像一个(非常)愚蠢的问题,但我找不到一种方法来访问我刚刚添加到Orchard中的内容类型的文本字段.我知道如何在将字段添加到内容部分时访问该字段,而不是在将字段直接添加到内容类型本身时访问该字段.
内容类型称为Product,它是可包含的并且正在列表中显示.我添加了普通部分,以及两个自定义字段:名为"Image"的MediaPicker字段和名为"About"的HTML样式的Text字段.我用来呈现包含它的列表的代码如下:
@using Orchard.DisplayManagement.Shapes;
@{
var list = Model.List;
var items = list.Items;
var count = items.Count;
var listTag = Tag(list, "ul");
listTag.AddCssClass("historia");
var index = 0;
}
<div class="produtos">
@foreach (var item in items)
{
var itemTag = Tag(item, "div");
itemTag.AddCssClass("item-" + index);
@itemTag.StartElement;
<h3>@item.ContentItem.TitlePart.Title</h3>
<img src="@Href(item.Image.Url)"
class="@item.Image.Class"
alt="@item.Image.AlternateText"
width="@item.Image.Width"
height="@item.Image.Height"
style="@item.Image.Style" />
<p>@item.About.Text</p>
@itemTag.EndElement;
++index;
}
</div>
@Display(Model.List)
@Display(Model.Pager)
Run Code Online (Sandbox Code Playgroud)
问题是@ item.Image没有生成Image字段,@ item.About也没有生成"About"文本字段.我甚至不知道Text字段是否有.Text属性来访问它的值,毕竟它可以有HTML风格...我甚至不知道在源代码中查看哪里可以帮助我找出这个已经完成了!
我尝试过一些不同的方法,比如@ item.ContentFields.About.Text或@ item.ContentField.About.Text,@ item.Fields [0],@ item.ContentItem.About.Text,@ item.ContentItem.ContentFields. About.Text(最后两个抛出异常,告诉我ContentItem没有那些字段......)
我知道,如果我已经将字段添加到内容部分,并将此部分添加到内容类型,我可以这样做:@ item.ContentItem.TheNameOfTheContentPart.Image.Url ...
我变得越来越沮丧,因为我无法弄清楚如何在乌节做最简单的事情.我需要Eureka时刻,这将使我能够知道在源代码中查看的位置,以找到这些问题的答案.