2009-08-24 78 views
0

我使用LINQ to SQL和DataGridViews创建数据库的可编辑的用户界面。
我的问题是,当从数据库中获取结果时,我必须翻译列名,因为尽管数据库中的所有名称都是英文的(Visual Studio类设计器支持的唯一语言),但我必须在不同的语言......的LINQ to SQL,匿名类型是只读的

所以我想过使用匿名类型:

c_dgvShops.DataSource = (from Shop s in DataContext.Shops 
           select new 
            { 
             Azonosito = s.Shop_ID, 
             Nev = s.Name, 
             Megye = s.County, 
             Iranyitoszam = s.Zipcode, 
             Cim = s.Address, 
             Latogatasok_szama = s.Visits.Count 
            }); 

(请注意,匿名类型的属性名称是匈牙利的语言[我要显示],从翻译英语。)

这导致数据GridViews是只读的。
我做了一些谷歌搜索,发现这一点: http://blogs.msdn.com/swiss_dpe_team/archive/2008/01/25/using-your-own-defined-type-in-a-linq-query-expression.aspx
根据这篇文章,我创建了一个名为“箭”(匈牙利等效店)新类和与翻译的属性名称填写,所以查询变成了:

c_dgvShops.DataSource = (from Shop s in DataContext.Shops 
           select new Bolt 
            { 
             Azonosito = s.Shop_ID, 
             Nev = s.Name, 
             Megye = s.County, 
             Iranyitoszam = s.Zipcode, 
             Cim = s.Address, 
             Latogatasok_szama = s.Visits.Count() 
            }); 

尽管这不是完全清楚,我,这将如何编辑DataGridView中显示的数据,我试过了,并且发生了异常:

NotSupportedException:不允许在查询中显式构造实体类型'DataTest_L2SQL.Bolt'。

那么什么是这样做的正确方法是什么?如何显示别名列名,但仍然保持数据可编辑?

非常感谢您提前!

回答

2

你应该手动定义DataGrid列(这将让你的标题设置为你想要的任何东西,以及自定义尺寸和显示格式),不依赖于数据网格通过数据源来发现你的列 - 此功能仅用于快速和肮脏的设置。

+0

哦,该死的......我再次复制它!谢谢! – ShdNx 2009-08-24 13:25:29

0

你要了解它的错误的方式。您不应该为本地化使用不同的类属性名称。

请按照此guide to localize your page。指定的HeaderText为列,改变形式语言,然后再指定语言的HeaderText。

+0

是的,我已经知道了。但是我应该怎么做呢? – ShdNx 2009-08-24 13:16:20