【发布时间】:2012-04-16 04:43:03
【问题描述】:
我在同一页面上有一个 SqlDataSource、一个 Gridview 和一个 DropDownList。 DropDownList 选择与一组 SelectCommands、UpdateCommands 和 DeleteCommand 相关联,因此我可以利用 GridView AutoGenerateEditButton="true" 和 AutoGenerateUpdateButton="true" 机制。
Page_Load
{
switch(ddl.SelectedItem.Text)
{
case "A":
sqlDS.SelectCommand = "Select * From A";
sqlDS.UpdateCommand = "Update A Set Name = @Name WHERE ID = @ID";
sqlDS.DeleteCommand = "Delete A WHERE ID = @ID";
break;
...
}
sqlDS.DataBind();
grd.DataSourceID = sqlDS.ID;
grd.DataBind();
}
我需要如何或在什么时候添加参数?是自动的吗?我基本上只是想要从表中更新和删除列的能力。我想在实际的 .cs 文件中完成所有这些操作,而不是在 .aspx 文件中,因为我希望最终使其更具动态性;但现在我只想了解基础知识。我怀疑我可能在不适当的事件中有 DataBind() 逻辑,因为我不完全了解与数据绑定相关的事件顺序。
查询并不复杂,不涉及连接或视图;它们是针对单个表的简单 SELECT。
【问题讨论】:
-
有一个名为 Dynamic Data 的内置模板,它随 ASP.Net 开箱即用,通常提供查看、更新、编辑和删除任何表中记录的能力一个数据源。您还可以自定义单个页面、单个操作、字段类型等。在此处查看更多信息:msdn.microsoft.com/en-us/library/ee845452(v=VS.100).aspx
-
您是否考虑过使用
LinqDataSource和LINQ-To-SQL/等。使用您的数据库?它可以容易得多,因为它会自动处理选择/插入/更新的管道。 -
即使您不使用动态数据,查看一些有关其工作原理的源代码以了解如何简化代码并利用已构建的-in 用于生成 SQL 语句等的工具。这种事情以前已经做过很多次了,根据你的做法,有更容易和更难的方法。