我有一个网格面板我需要显示/隐藏网格面板中的列,具体取决于复选框的值.如果选中该复选框,我需要在网格中显示列,如果未选中,我需要隐藏网格中的列.
这是我的代码
var chkEnableDisplayResponsibilityForAction = '<%=Session["chkEnableDisplayResponsibilityForAction"]%>';
var flags = Boolean.parse(chkEnableDisplayResponsibilityForAction);
var flags1 = !Boolean.parse(chkEnableDisplayResponsibilityForAction)
var colModel = new Ext.grid.ColumnModel([
{ header: "PricePlanID", width: 100, sortable: true, dataIndex: 'PricePlanID', hidden: flags, hideable: flags1 },
]);
Run Code Online (Sandbox Code Playgroud)
当我刷新页面时,我无法切换列,具体取决于复选框的值.但是当我登录并注销时,我能够看到网格面板中的更改.任何人都可以帮我刷新网格面板中的列值吗?
我有一个SQL Server 2008多对多关系表(Assets)有两列:
AssetId (PK, FK, uniqueidentifier, not null)
AssetCategoryId (PK, FK, int, not null)
Run Code Online (Sandbox Code Playgroud)
在我的项目中,我需要从该表中获取行,并定期将它们插入到复制的数据库中.所以,我有两个完全相同的数据库(包括约束).
为了从一个数据库"复制"到另一个数据库,我使用带有临时表的MERGE语句.我将最多50条记录插入临时表,然后将临时表与Assets我正在复制的表合并,如下所示:
CREATE TABLE #Assets (AssetId UniqueIdentifier, AssetCategoryId Int);
INSERT INTO #Assets (AssetId, AssetCategoryId) VALUES ('ed05bac3-7a92-46aa-8822-2d882b137597', 44), ('dc5e3082-e2eb-4bdf-a640-94e0f59411ed', 22) ... ;
MERGE INTO Assets WITH (HOLDLOCK) AS Target
USING #Assets AS Source
ON Target.AssetId = Source.AssetId AND Target.AssetCategoryId = Source.AssetCategoryId
WHEN MATCHED THEN
UPDATE SET ...
WHEN NOT MATCHED BY Target THEN
INSERT (AssetId,AssetCategoryId) VALUES (Source.AssetId,Source.AssetCategoryId);
Run Code Online (Sandbox Code Playgroud)
在大多数情况下,这很有效.但是,偶尔会出现错误:
违反PRIMARY KEY约束'PK_Assets'.无法在对象'dbo.Assets'中插入重复键.重复键值为(dc5e3082-e2eb-4bdf-a640-94e0f59411ed,22).该语句已终止.
当我在Assets …
删除多对多关系中的记录时,关系表具有孤立记录.我在DbContext中设置了以下多对多关系.
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Car>()
.HasMany(u => u.Owners)
.WithMany(l => l.Cars)
.Map(ul =>
{
ul.MapLeftKey("CarId");
ul.MapRightKey("OwnerId");
ul.ToTable("CarOwners");
});
}
Run Code Online (Sandbox Code Playgroud)
我的所有者模型有虚拟财产汽车:
public virtual ICollection<Car> Cars { get; set; }
Run Code Online (Sandbox Code Playgroud)
我的汽车模型有虚拟财产所有者:
public virtual ICollection<Owner> Owners { get; set; }
Run Code Online (Sandbox Code Playgroud)
我按如下方式删除了一辆车(db是我的DbContext,car是Car模型).
db.Cars.Remove(car);
db.SaveChanges()
Run Code Online (Sandbox Code Playgroud)
当我删除Car时,我期望CarOwners表中的所有记录都被删除,但事实并非如此.有什么建议?
无论如何,是否可以在不遍历每个节点的情况下从 XML 节点值中修剪前导和尾随空格。
例如<someElement> value here </someElement>会变成<someElement>value here</someElement>
以下代码执行此操作,但我不想遍历每个会影响性能的节点:
if (node.ChildNodes.Count == 0)
node.InnerText = node.InnerText.Trim();
else
{
for (int i = 0; i < node.ChildNodes.Count; i++)
{
TrimLeadingOrTrailingSpacesFromNodeValue(node.ChildNodes[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?这LoadOptions.PreserveWhitespace不是我要找的,我需要修剪 XML 节点中的值。
如果我在using块中实例化SqlDataReader ,我是否需要close()在读取器上调用?
查找下面显示的用户的简单示例.
using (var connection = new SqlConnection(Settings.GetValue("SqlConnection")))
{
SqlCommand command = new SqlCommand("select * from Users where Id = @Id", connection);
command.Parameters.Add("@Id", SqlDbType.UniqueIdentifier);
command.Parameters["@Id"].Value = id;
using (SqlDataReader reader = command.ExecuteReaderWithRetry())
{
reader.Read();
if (reader.HasRows)
{
//Do work
}
//Is this neccesary?
reader.Close();
}
}
Run Code Online (Sandbox Code Playgroud)