与Delphi7相比,为什么StringGrid的边界在XE3中如此不清楚?如何解决?
我有这样的代码
var context = new MyDbContext(); // db context generated from database
var id = Guid.NewGuid();
var cust = new customer()
{ Id = id, Name = "John" };
context.Customers.Add(cust);
// context.SaveChanges();
var res = context.Customers.Where(c => c.Id == id);
MessageBox.Show(res.Count().ToString());
Run Code Online (Sandbox Code Playgroud)
我在表中插入了一条记录,当我运行查询时,我希望结果将包含这条新记录.但事实上它没有.它只有在我之前创建SaveChanges()时才有效.
我做错了什么,为什么不这样做?
是否可以动态添加超链接而不创建新的段落,如此问题中动态添加超链接到RichTextBox?
我想要"请访问http://www.google.com.谢谢!" 不
"请拜访
.谢谢!".
此外,RichTextBox必须是只读的,用户无法输入.这就像日志,我需要的是定期添加一些有时包含URL的文本.
我的数据库中有User和UserGroup表:
我按照本教程生成EF模型(数据库优先)和DataSource for User http://msdn.microsoft.com/en-us/data/jj682076.aspx
在我的表单上,我创建了BindingSource(bsUsers)并将DataGridView绑定到它,因此它显示了Ids和Usernames.
以下是我在表单启动时加载数据的方法:
_myDbContext = new MyDbContext();
_myDbContext.Users.Load();
bsUsers.DataSource = _myDbContext.Users.Local.ToBindingList();
Run Code Online (Sandbox Code Playgroud)
但现在我想在同一个DataGridView中显示GroupName.最好的方法是什么?
我试图UserGroup.GroupName
在列中指定,DataPropertyName
但它不起作用,单元格保持为空.
到目前为止,我找到的唯一解决方案是创建一个新的未绑定列并手动填充它:
foreach (var item in (IList<User>)bsUsers.DataSource)
{
dgw.Rows[i].Cells["GroupName"].Value = item.UserGroup.Name;
}
Run Code Online (Sandbox Code Playgroud)
但它看起来不是一个好方法.例如,在更改用户组后,我将需要再次更新它,或者在添加新记录时.
c# ×3
ado.net ×1
datagridview ×1
delphi ×1
delphi-7 ×1
delphi-xe2 ×1
delphi-xe3 ×1
richtextbox ×1
winforms ×1
wpf ×1