表单视图更新问题

时间:2013-02-08 15:19:01

标签: c# asp.net listview gridview master-detail

我正在使用带有c#后端的asp.net来创建一个包含主视图和详细视图的作业网站。 为了提取数据,我使用的是实体框架,它是在我正在开发的同一台xp机器上运行的SQL Server 2005实例中的反向工程代码。我希望网站上的详细视图能够查看和编辑在主视图上选择的现有记录,但也能够插入记录。 到目前为止,我已经达到了详细视图既可以用于查看也可以用于插入记录的程度,但编辑工作尚未成功。我没有在更新时收到错误,我看到没有任何变化反映在任何地方。
我见过的一些解决方案说你必须定义DataKeyNames。 (在我的例子中,我使用了一个字段:Job_UID,这实际上是我如何连接细节和主视图。) 我试图确保通过减少where子句中的项目数来正确定义更新查询,以反映我的PK,并通过在查询设计器中测试查询。 这是我的疑问:


SelectCommand =“SELECT Job_Details.Job_UID,Job_Details.Job_Title,Job_Details.Job_Store_ID,Job_Details.Job_Type_Id,Job_Details.Job_Description,Job_Details.Job_Responsibilities,Job_Details.Job_Pay,Job_Details .Job_Supervisor,Job_Details.Job_Start_Date,Job_Details.Job_End_Date,Job_Details.Job_Meta_Post_StartDate,Job_Details.Job_Meta_Post_EndDate,Job_Details.Job_Meta_Keywords,Store_Look_Up.Store_Name,Store_Look_Up.Store_Region,Store_Look_Up.Store_Address,Job_Type.Job_Type_Name,Job_Type.Job_Type_Description FROM Job_Details INNER JOIN JOB_TYPE ON Job_Details。 Job_Type_Id = Job_Type.Job_Type_Id INNER JOIN Store_Look_Up ON Job_Details.Job_Store_ID = Store_Look_Up.Store_Id WHERE(Job_Details.Job_UID = @Job_UID)“                
InsertCommand =“INSERT INTO Job_Details(Job_UID,Job_Title,Job_Store_ID,Job_Type_Id,Job_Description,Job_Responsibilities,Job_Pay,Job_Supervisor,Job_Start_Date,Job_End_Date,Job_Meta_Post_StartDate,Job_Meta_Post_EndDate,Job_Meta_Keywords)VALUES(@Job_UID,@ Job_Title,@ Job_Store_ID,@ Job_Type_Id,@ Job_Description,@ Job_Responsibilities,@ Job_Pay,@ JobSupervisor,@ Job_Start_Date,@ Job_End_Date,@ Job_Meta_Post_StartDate,@ Job_Meta_Post_EndDate,@ Job_Meta_Keywords)“                
UpdateCommand =“UPDATE Job_Details SET Job_Title = @Job_Title,Job_Store_ID = @Job_Store_ID,Job_Type_Id = @Job_Type_Id,Job_Description = @Job_Description,Job_Responsibilities = @Job_Responsibilities,Job_Pay = @ Job_Pay,Job_Supervisor = @ Job_Supervisor,Job_Start_Date = @Job_Start_Date,Job_End_Date = @Job_End_Date,Job_Meta_Post_StartDate = @Job_Meta_Post_StartDate,Job_Meta_Post_EndDate = @Job_Meta_Post_EndDate,Job_Meta_Keywords = @Job_Meta_Keywords WHERE (Job_UID = @Original__Job_UID)“>

我见过的其他解决方案似乎涉及很多自定义编码。不应该只使用Visual Studio的代码生成器,并进行一些编码调整吗?

任何帮助将不胜感激,并提前感谢!

1 个答案:

答案 0 :(得分:0)

问题在于我的更新命令:

我使用FormView的ItemUpdatedEvent来确定修改了多少行:在我的情况下为0。

        string textToDisplay = string.Empty;
        textToDisplay += "AffectedRows: " + e.AffectedRows.ToString() + "|";

        Label1.Text = textToDisplay;

一旦我能够清楚地看到有多少行正在更新,我就开始测试查询。我用PK替换了@Original_Job_UID。它在页面上工作。 然后我浏览了一些MSDN文档,看到过滤器应该是 @Job_UID。我进去了,它有效!

希望这能帮到你!