我目前正在使用LINQ-to-XML并使用我的查询填充DataGridView.我遇到的麻烦是,一旦加载到DataGridView中,值似乎是不可编辑的(ReadOnly).这是我的代码:
var barcodes = (from src in xmldoc.Descendants("Container")
where src.Descendants().Count() > 0
select
new
{
Id = (string)src.Element("Id"),
Barcode = (string)src.Element("Barcode"),
Quantity = float.Parse((string)src.Element("Quantity").Attribute("value"))
}).Distinct();
dataGridView1.DataSource = barcodes.ToList();
Run Code Online (Sandbox Code Playgroud)
我在某处读到"使用匿名类型时,DataGridView将处于ReadOnly模式".但我无法找到解释为什么或究竟该怎么办.
有任何想法吗?
编辑 - 这是我想出的答案......
所以我添加了一个"容器"类(使用Get和Set < - 非常重要!)以避免Anonymous类型成为ReadOnly问题:
public class Container
{
public string Id { get; set; }
public string Barcode { get; set; }
public float Quantity { get; set; }
}
// For use with the Distinct() operator
public class ContainerComparer : IEqualityComparer<Container>
{
public bool Equals(Container x, …Run Code Online (Sandbox Code Playgroud) 我有一个简单的课程:
public class TileName {
int Zoom, X, Y;
public override bool Equals (object obj)
{
var o = obj as TileName;
return (o != null) && (o.Zoom == Zoom) && (o.X == X) && (o.Y == Y);
}
public override int GetHashCode ()
{
return (Zoom + X + Y).GetHashCode();
}
}
Run Code Online (Sandbox Code Playgroud)
我很好奇,如果我做了类似的事情,我会得到更好的哈希码分布:
public override int GetHashCode ()
{
return Zoom.GetHashCode() + X.GetHashCode() + Y.GetHashCode();
}
Run Code Online (Sandbox Code Playgroud)
这个类将被用作Dictionary键,所以我确实希望确保有一个不错的发行版.
我刚刚在Jupiter Collaboration System中读完了高延迟,低带宽窗口,我大部分都遵循了所有内容,直到第6部分:全局一致性.本部分描述了如何扩展本文中描述的系统以适应连接到服务器的多个客户端.但是,解释非常简短,并且基本上说如果中央服务器仅将客户端消息转发给所有其他客户端,则系统将起作用.我真的不明白这是如何工作的.在发送给所有其他客户端的消息中将发送什么状态向量?服务器是否为每个客户端维护单独的状态向量?它是否为每个客户端在本地维护单独的小部件副本?
我能想到的一个简单示例就是这样的设置:想象客户端A,服务器和客户端B,客户端A和客户端B都连接到服务器.首先,这三个都有状态对象"ABCD".然后,客户端A在服务器发送消息"在位置0插入字符G"的同时发送消息"在位置0插入字符F".似乎只是将客户端A的消息中继到客户端B,反之亦然,实际上并不处理这种情况.那么服务器究竟做了什么呢?
[免责声明:我是ASP.NET MVC开发人员]
嗨,
我正在寻找一些在Silverlight 4中使用WCF RIA实现MVVM模式的最佳实践.
我不打算使用IoC的MEF来定位我的ViewModel.我想知道的是如何在Silverlight 4和WCF RIA中应用MVVM模式.
我不想使用像Prism或MVVM Light工具包这样的其他东西.我在互联网上发现了许多例子,展示了如何在视图上拖放数据源并完成工作(这让我想起了我的第一个VB6开发).
我试图用WCF RIA实现MVVM,它根本不是很明确的.如果我理解,MVVM应该包含所有逻辑,以便单独测试它,但是当它与WCF RIA结合时,它是另一个故事.我有以下问题.
我可以使用生成的元数据作为模型吗?如果我从头开始写所有内容会更容易使用它.
我看到了获取数据的唯一方法是通过DomainContext或通过视图中的直接绑定(本地资源).我不希望视图中的直接绑定,根本不可测试.另一方面,我不能使用DomainContext,它不暴露任何单个实体!我所拥有的只是可以绑定到datagrid的EntitySet.如何从ViewModel将单个实体绑定到DataForm?
如何将模型更新到数据库?
如何从一个实体导航到其项目的集合.例如,如果我有公司实体,我想显示一个DataForm来更新实体信息,并显示一个数据网格来显示公司的地址.保存表单时,我希望将信息保存到公司,并提供有关选择哪个地址为活动状态的信息.
请帮助我了解如何做得好.或者也许我应该放弃WCF RIA并从头开始使用WCF?
你怎么看 ?
我有一些ARes模型(见下文),我正在尝试使用关联(这似乎完全没有文档,也许不可能,但我想我会尝试一下)
所以在我的服务方面,我的ActiveRecord对象将呈现类似的东西
render :xml => @group.to_xml(:include => :customers)
Run Code Online (Sandbox Code Playgroud)
(参见下面生成的xml)
模型组和客户是HABTM
在我的ARes方面,我希望它可以看到<customers>xml属性并自动填充该.customersGroup对象的属性,但是不支持has_many等方法(至少据我所知)
所以我想知道ARes如何反映XML来设置对象的属性.例如,在AR中,我可以def customers=(customer_array)自己创建并设置它,但这似乎在ARes中不起作用.
我找到一个"关联"的建议就是有一个方法
def customers
Customer.find(:all, :conditions => {:group_id => self.id})
end
Run Code Online (Sandbox Code Playgroud)
但这有一个缺点,就是它会进行第二次服务电话来查找这些客户......并不酷
我希望我的ActiveResource模型能够看到XML中的客户属性并自动填充我的模型.有人对此有经验吗??
# My Services
class Customer < ActiveRecord::Base
has_and_belongs_to_many :groups
end
class Group < ActiveRecord::Base
has_and_belongs_to_many :customer
end
# My ActiveResource accessors
class Customer < ActiveResource::Base; end
class Group < ActiveResource::Base; end
# XML from /groups/:id?customers=true
<group>
<domain>some.domain.com</domain>
<id type="integer">266</id>
<name>Some Name</name>
<customers type="array">
<customer>
<active type="boolean">true</active>
<id type="integer">1</id>
<name>Some …Run Code Online (Sandbox Code Playgroud) 给定结构数组,如何重命名字段?例如,给定以下内容,如何将"bar"更改为"baz".
clear
a(1).foo = 1;
a(1).bar = 'one';
a(2).foo = 2;
a(2).bar = 'two';
a(3).foo = 3;
a(3).bar = 'three';
disp(a)
Run Code Online (Sandbox Code Playgroud)
什么是最好的方法,"最佳"是性能,清晰度和一般性的平衡?
我想将自定义字段添加到ContactsContract内容提供程序.我正在尝试构建一个Voip应用程序,并希望为其添加一个SIP地址(名称@域)字段.我需要与哪种MIME类型相关联?另外,我想添加一个组地址字段,其中包含一个组地址列表(名称@ domain,name @ domain,...).我必须将这种类型的字段与MIME类型相关联.
我还想将自定义字段添加到"呼叫历史记录"中,例如会话ID和SIP地址(名称@域)字段.如何自定义通话记录?
如果有人可以给我一个例子,那就太棒了.
我正在开发一个Windows安装程序项目.现在我只希望软件只能安装在Windows 7或Windows Server 2008 R2系统上,我试着用这个:
<Condition Message='Windows Server 2008 R2 or Windows 7 is required'>(VersionNT = 600 AND ServicePackLevel = 1) OR VersionNT = 601 </Condition>
Run Code Online (Sandbox Code Playgroud)
但它仍然可以安装在Windows Vista上.请帮忙!
谢谢!
我认为默认目录是一个尾随斜杠.
但是如果用户选择不同的目录呢?
有没有办法使INSTALLDIR没有尾随斜杠?
并不是我希望它没有拖尾斜线.我想知道我是否可以指望它,例如,
[INSTALLDIR]Filter.dll
Run Code Online (Sandbox Code Playgroud)
...将始终解析为真实有效的文件系统路径.
目前我用
[INSTALLDIR]\Filter.dll
Run Code Online (Sandbox Code Playgroud)
我在那里得到了一个双斜线.它是有效的并且可以解决,但我想消除双斜杠.
谢谢.
c# ×2
wix ×2
.net ×1
android ×1
associations ×1
c#-3.0 ×1
comparison ×1
datagridview ×1
egg ×1
field ×1
hash ×1
linq ×1
linq-to-xml ×1
matlab ×1
mvvm ×1
python ×1
real-time ×1
rename ×1
silverlight ×1
system ×1