【问题标题】:When creating a new record, how do I fill some fields with values from the filter?创建新记录时,如何使用过滤器中的值填充某些字段?
【发布时间】:2009-11-13 10:15:32
【问题描述】:

我正在处理一个 ASP.NET 页面,它基本上是一个围绕数据库的快速破解。它用于内部项目,并且该站点的设置方式可以为多个人提供对数据的读/写访问权限。每周一次,我们从中收集大量数据,将其添加到 XML 文件中,并将其作为应用程序更新的一部分发送给我们的客户。 (这些客户没有直接访问权限。)

由于它只是一个内部项目,几乎没有可用于开发的预算。所以我们选择让事情变得简单。我们将数据存储在 SQL Server 数据库中,围绕它创建了一个 Entity Framework 类用于数据访问,并围绕它放置了一个 Dynamic Data Site Web 应用程序。基本上,可以快速设置并且无需编写太多代码的东西。它也很好用。尤其是通过布尔字段和表引用过滤记录真的很酷。

但是,在数据输入过程中,少数用户会犯一些小错误。他们已将过滤器设置为仅过滤表的子集,然后单击“新建”以将记录添加到该子集中。不幸的是,新记录没有默认为这些过滤器中的值,因此用户必须再次设置正确的值。太糟糕了,他们偶尔会错过这一点,因此一些记录最终会得到错误的值。

那么,当用户创建一条新记录时,我如何确保这条新记录会将过滤器值复制为默认值? (并且仍然允许用户选择其他值!)

【问题讨论】:

  • 老实说,如果可能的话,我会感到惊讶。为一个有趣的问题 +1 :)
  • 好吧,如果我不问,我永远不会让它工作。 :-)
  • 这是可能的并且应该已经在版本 1 中 - 看起来它会在未来出现。

标签: c# asp.net entity-framework dynamic-data


【解决方案1】:

【讨论】:

  • “动态数据期货”链接非常有用!
【解决方案2】:

创建新记录时是否会触发事件?如果您可以实现一个事件处理程序,并且当前的过滤器集是您可以通过编程访问的东西,那么在您的 newRecord() 事件处理程序中,您应该能够通过每个当前过滤器,确定过滤器的哪个字段用于,以及过滤器的值是什么,将新记录的字段设置为过滤器值。

如果有帮助,这里有一些伪代码:

NewRecordHandler(object sender, NewRecordEventArgs e)
{
    Record newRecord = (Record)e.NewRecord;
    foreach(Filter filter in m_dataSource.Filters)
    {
        newRecord[filter.FieldName] = filter.Value;
    }
}

您需要能够使用索引或字符串(如Record["ColumnName"] = value;)动态访问记录属性。否则,您可能无法循环执行,如图所示。希望这会有所帮助。

【讨论】:

  • 好问题,因为我只是使用 VS2008 提供的“动态数据站点”代码的默认功能。不幸的是,默认情况下它不会这样做,并且没有太多时间来寻找解决方案。 (现在,这只是一个不错的选择,一旦我知道解决方案就会添加它。我们没有积极搜索,因为其他任务具有更高的优先级。)
【解决方案3】:

我会使用Object Factory 连接到新按钮 onclick。我会使用Filter 值或视图接口初始化Factory,以便工厂可以返回正确初始化的对象。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多