【问题标题】:Form view update issues表单视图更新问题
【发布时间】:2013-02-08 15:19:00
【问题描述】:

我正在使用带有 c# 后端的 asp.net 创建具有主视图和详细视图的工作网站。 为了提取数据,我使用的是实体框架,该框架首先从 SQL Server 2005 实例逆向工程代码,该实例运行在我正在开发的同一台 xp 机器上。我希望网站上的详细视图能够查看和编辑在主视图中选择的现有记录,而且还能够插入记录。
到目前为止,我已经到了可以使用详细视图查看和插入记录的地步,但编辑至今仍未成功。我在更新时没有收到错误,而且我看不到任何地方都反映了任何变化。
我见过的一些解决方案说您必须定义 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、@Job_Supervisor、@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 的代码生成器并进行一些编码调整吗?

任何帮助将不胜感激,并在此先感谢!

【问题讨论】:

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


    【解决方案1】:

    问题出在我的更新命令上:

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

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

    一旦我清楚地看到有多少行正在更新,我就开始测试查询。我用PK替换了@Original_Job_UID。它在页面上起作用。 然后我查看了一些 MSDN 文档,发现过滤器应该是 @Job_UID。我输入了它,它起作用了!

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-23
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      相关资源
      最近更新 更多