在ASP.NET中自定义编辑记录的最佳方法?

问题描述:

我来自一个Rails背景,并在ASP.NET项目(而不是ASP MVC)上做了一些工作。新手问题:为记录表制作自定义编辑器的最简单方法是什么?在ASP.NET中自定义编辑记录的最佳方法?

例如:我有一大堆的数据行,并希望更改每个“类别”栏 - 也许一个下拉列表中,也许一个链接,也许用户键入它

在Rails,我。 '迭代行来构建表,并且每行都有一个表单。表单会有一个输入框或下拉菜单,并将数据提交给控制器,如“/ item/edit/15?category = foo”,其中15是itemID,新类别是“foo”。

我是新来的ASP.NET模型,我不知道“正确”的方式来做到这一点 - 只是最简单的方法来取回新数据&保存。我会制作一个自定义控件并将其附加到每一行吗?任何帮助赞赏。

您现在可以真正作弊并且窥视.NET 3.5 SP1附带的新动态数据。斯科特格思里有一个博客条目demoing它会如何快速和容易在这里为你流:

http://weblogs.asp.net/scottgu/archive/2007/12/14/new-asp-net-dynamic-data-support.aspx

没有得到那个最前沿,我会使用的XSD生成器生成一个强类型数据集相一致与表中的问题。这也会生成可用于执行所有CRUD语句的TableAdapter。

从那里,它绑定到DataGrid和杠杆参与,所有的标准模板/事件,如EditIndex,SelectedIndex的,RowEditing,RowUpdated等

自1.0年初,我已经做了.NET的日子以及这种功能在每次更新框架时都变得越来越简化。

编辑:我想给Matt Berseth博客点点头。我一直在关注他的很多东西,现在很棒!

有几个控件可以为你做到这一点,根据它们的相对灵活性,具有不同程度的复杂性。

执行此操作的传统方法是DataGrid控件,它为您提供表格布局。如果你想在外观上具有更大的灵活性,DataList和ListView控件也具有对编辑,插入或删除字段的内置支持。

检查出Matt Berseth's blog的一些优秀的asp.net控件实例。

感谢您的答案家伙。它看起来像定制DataGrid是要走的路。对于任何ASP.NET新手,这里是我在做什么

<asp:DataGrid ID="GridView1" runat="server" AutoGenerateColumns="False"> 
    <Columns> 
     <asp:BoundColumn DataField="RuleID" Visible="False" HeaderText="RuleID"></asp:BoundColumn> 
     <asp:TemplateColumn HeaderText="Category"> 
     <ItemTemplate> 
      <!-- in case we want to display an image --> 
      <asp:Literal ID="litImage" runat="server"> 
      </asp:Literal> 
      <asp:DropDownList ID="categoryListDropdown" runat="server"></asp:DropDownList> 
     </ItemTemplate> 
     </asp:TemplateColumn> 

    </Columns> 
</asp:DataGrid> 

这将创建一个数据网格。然后,我们可以将其绑定到数据源(在我的情况数据表),并使用之类的东西

foreach (DataGridItem item in this.GridView1.Items) 
{ 
    DropDownList categoryListDropdown = ((DropDownList)item.FindControl("categoryListDropdown")); 
    categoryListDropdown.Items.AddRange(listItems.ToArray()); 
} 

来填充数据网格的INTIAL下拉。在这种情况下,您还可以访问item.Cells [0] .text以获取RuleID。

我自己的注意事项:ASP.NET模型执行代码隐藏文件中的所有内容。在高层次上,您始终可以遍历GridView1。获取每一行的项目,以及item.findControl(“ControlID”)来查询存储在每个项目中的值,例如在按下“更新”按钮之后。