创建发票的用户界面

3

目前,我正在制作一种定制的发票解决方案。我已经创建了多种方式供客户创建他们的模板(HTML、Word、LaTex)并根据他们的模板获取发票。然而,这些发票是手动生成的。

所以,流程如下:

  • 请求创建新发票
  • 创建一个初步的发票
  • 用户有机会进行更改(例如添加、删除、更改行)
  • 创建PDF文件

需要明确的是,初步发票不需要按照模板格式进行格式化,但您应该能够添加/删除/更改行,并且对于每个单元格,指示该值是否应在最终结果中可见。

我的问题是我找不到一种合适的方法来显示初步发票。我尝试过数据网格(默认、Telerik、DevExpress),但它太混乱了。除了数据网格之外,我不知道还能用什么。

我应该使用哪些控件来获得漂亮和易用的用户界面呢?


虽然不是在回答你的问题,但如果你想让用户设计他们希望发票屏幕看起来的样子,我建议使用 http://www.balsamiq.com/products/mockups - Kane
5个回答

2

我知道这一点,而那正是我想要避免的 ;) - Henri

1

你用的平台是什么?Winforms?WPF?

你对使用数据网格有什么不喜欢的地方?问题的一部分在于,无论你是否喜欢,你都将编写一个数据网格 - 你基本上描述了其中的一些特性。如果可能的话,尽量使用别人的数据网格,因为这样可以节省很多工作。通常,第三方数据网格应该是相当可定制的,你应该能够使其外观看起来任何你想要的样子 - 并利用内置的排序、编辑、分组等功能。从头开始创建类似数据网格的控件并不容易,如果可能的话应该避免。

你不必拥有一个巨大的平凡的数据网格 - 你可以创建一个自定义控件,以你喜欢的方式显示发票,只有在发票显示表格数据时才出现实时数据网格,格式化为发票本身的一部分。


这正是我已经在考虑的,但我想看看是否有比自定义数据网格更好的想法。不过还是谢谢你的回答。+1 ;) - Henri

1

我正在做类似的东西,客户可以在发送发票之前编辑或删除行项目。

他们目前使用的业务应用程序是WebForms Intranet 应用程序,因此这是对其的扩展。所以他们可以相当轻松地添加/删除/编辑行。

但是 Egor 是正确的。无论你做什么,你本质上都在谈论一个数据网格。 我想你想要更“清晰”和更直观的东西?

简单很难。


确切地说,它应该很容易使用,因为用户完全不需要技术知识。 - Henri

1

这种情况下,典型的UI范例是将其视为两个独立的问题:为用户提供一种查看可修改元素的方式,并使其能够修改任何特定元素。您可以使用列表控件(ListBoxListView,如果元素按层次结构组织或需要分组到类别中,则可以使用TreeView)来呈现元素,然后当用户选择一个元素时,程序会呈现一个表格形式的字段名称和可编辑值控件。

基本上,您将程序的功能分为两类:用户想要对行执行的操作(添加、删除、重新排序、选择)和用户想要对所选行的元素执行的操作。

如果您使用DataGridView,则可以将这两组功能合并为一个,但是如您所见,如果您正在编辑的元素有任何复杂性,那么这将变得非常丑陋。

对于此问题,有两种可能的方法:属性表范例(选择对象,右键单击,选择“属性”,在模态对话框中编辑值),或者将窗口分成两个面板,其中一个是行,另一个是当前选定行的详细信息。还有很多其他方法。


哇,这听起来像是一个可行的解决方案。然而,我预见到这种特定情况下存在一个问题。如果一行的内容与行本身分开,那么创建发票就不会感觉自然。因此,尽管我认为实施您的想法将减少复杂性,但恐怕也会反直觉。我将制作一个简单的模型,并让一些人测试两者。我会将您的答案标记为“答案”,因为这是最好的想法。 - Henri
理想情况下,您会实现一个原地编辑范例。因此,用户单击一行,再次单击或按F2进行编辑,而不是获取文本框以编辑文本,用户将获得一个小表单。然而,要使其自然而然地实现起来却非常困难 - 您实际上正在实现类似于下拉列表的行为,只不过它包含一个表单而不是项目。在Windows Forms中很难做到这一点。这是使用WPF的另一个原因。 - Robert Rossney

0

我会看看已经存在的内容,尤其是发票方面,看看它们是如何做的。

不确定你的公司有多大,但利用大型公司应用程序和用户界面从来没有坏处,它们投入数千/数百万美元进行用户界面设计和测试。

我会查看以下任何一个(大多数都提供免费试用或仅尝试搜索截图):

只是一些想法...希望这能有所帮助!


发票管理仅是一个更大应用程序的一部分,所以您建议的网站不起作用,因为我正在开发的软件增加了附加值,其中发票仅需要进行小的修改和添加。 - Henri
1
但是mattruma提出了一个很好的观点。上述网站已经在设计界面方面做了艰苦的工作。值得看看他们如何解决同样的问题。 - davewasthere

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接