我网站上的用户可以将任意数量的电子邮件地址链接到其帐户。我正在制作一个页面来做到这一点。在页面加载时,与用户关联的所有电子邮件地址都将从数据库中提取并显示在页面上。然后,用户应该能够添加,编辑和删除这些电子邮件。
许多网站需要这样做,所以我认为可能有现有工具提供此功能。现有的任何控件都可以这样做吗?
我查看了文档,但是有很多控件,很难说它们可以用它们做什么。
我可以自己实现,但我讨厌重新发明轮子(感觉这是人们应该一直需要做的事情。)
有什么建议吗?
答案 0 :(得分:1)
2种不同的方法
1)SERVER SIDE :在“添加”按钮事件中,在代码隐藏中创建一个文本框对象,并将其添加到表单中。然后在保存按钮单击中,也可以从中读取。
http://www.4guysfromrolla.com/articles/081402-1.aspx
2)客户端:使用java脚本(转到jquery使其变得简单)将一个输入文本元素添加到表单并在提交按钮中单击(希望使用ajax保存)。
链接是一些类似的示例(从代码隐藏添加标签控件并使用javascript添加texbox)
答案 1 :(得分:1)
GridView
控件可以让你这样做,虽然考虑到你有这么简单的要求,这有点过分。在GridView
中,您必须指定DataSource
,然后收听RowEditing
,RowUpdating
,RowCancelingEdit
和RowDeleting
事件,在每个事件内适当更新DataSource
,并在您认为必要时保存到数据库。对此here on MSDN有一个相当不错的概述。
我说“当你认为有必要时”,因为有些人在每次操作后都会保存,但是其他人(比如我)更喜欢为用户提供“保存”和“重置”按钮,以便他们可以在不实际更改的情况下退出修改数据库中的任何内容。但是,您的电子邮件地址列表可能不需要这种级别的监督。
坦率地说,我只是为用户提供了一个HTML文本框,一个添加按钮和一个保存按钮,看起来像是:
New E-mail address: <input type="text" id="newEmail" /> <button id="add" type="button">Add</button>
Current E-mail addresses:
user@host.domain <input type="checkbox" id="database-Id-goes-here" /> Delete?
user2@host.domain <input type="checkbox" id="database-Id-goes-here" /> Delete?
...
只需将runat="server"
属性添加到这些控件即可轻松实现此服务器端。 “当前电子邮件地址”部分非常适合Repeater
控件。
您可以编写JavaScript代码来处理保存此数据,但除非您在此页面上有很多其他内容(这会使您的页面生命周期变得复杂并迫使您处理许多if (Page.IsPostBack == false)
条件),我会坚持服务器端实现。
为了解决你对重新发明车轮的最终担忧:个人而言,我更倾向于在这些情况下重新发明轮子。内置的Microsoft控件可以处理很多这些CRUD样式的页面,但是除非你需要表示复杂的数据(因此需要复杂的生命周期),否则就可以自己实现它。 / p>
您的用户不太可能需要一次编辑或更新多个电子邮件地址,并且您的验证将是简约的(与验证更大的对象相比),因此我不会尝试找到Microsoft控件可满足您的需求。
除此之外,Repeater
和直接HTML也可能更快。您的用户可能不会注意到这种差异,因为无论如何绑定都会很短,但考虑到这些因素并没有什么坏处。
答案 2 :(得分:1)
Listview和objectdatasource。 Gridview执行内联编辑,渲染效果不佳,没有内置插入功能。