我在Visual Studio 2010中使用网格视图时尝试更新访问数据库但没有取得任何成功。让我试着解释一下我的内容。
我有一个带有表格的访问数据库" tblConfirmedworkhours"其中包含字段" dateworked" &安培; "确认&#34 ;.我可以使用编辑/更新链接在我的网页上显示已过滤的表格,但表格不会更新。
选项1:我希望(如果可能的话)不必点击编辑&更新按钮,只需编辑屏幕上的数据(我想到某种类似于连续形式的东西是MS Access,然后点击某种保存按钮(如果可能的话,会再次运行追加查询)已创建并存储在我的访问数据库" qryToHistory"。
选项2:能够使用编辑/更新按钮更改表格中的数据。
这是我目前的代码:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataSourceID="AccessDataSource1" Width="983px"
AutoGenerateDeleteButton="True" AutoGenerateEditButton="True">
<Columns>
<asp:BoundField DataField="WorkHourID" Visible="false"
HeaderText="Timesheet ID" />
<asp:BoundField DataField="EmpName" HeaderText="Employee"
SortExpression="EmpName" />
<asp:BoundField DataField="dateworked"
HeaderText="Date" SortExpression="dateworked" ApplyFormatInEditMode="True">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:CheckBoxField DataField="confirmed" HeaderText="Confirmed"
SortExpression="confirmed" Text="This is OK">
<ItemStyle HorizontalAlign="Center" />
</asp:CheckBoxField>
</Columns>
<EditRowStyle Width="500px" Wrap="True" />
<EmptyDataRowStyle Width="5000px" />
</asp:GridView>
<asp:AccessDataSource ID="AccessDataSource1" runat="server"
DataFile="~/PayrollDirect.accdb"
SelectCommand="SELECT [WorkHourID], [EmpName], [dateworked], [confirmed] FROM [tblConfirmedworkhours] WHERE (([CompanyID] = ?) AND ([confirmed] = ?)) ORDER BY [dateworked]"
UpdateCommand="UPDATE tblConfirmedworkhours SET dateworked=dateworked, confirmed=confirmed where WorkHourID=WorkHourID">
<SelectParameters>
<asp:SessionParameter DefaultValue="0" Name="CompanyID" SessionField="UserID" Type="Int32" />
<asp:Parameter DefaultValue="false" Name="confirmed" Type="Boolean" />
</SelectParameters>
<UpdateParameters>
<asp:Parameter Name="dateworked"/>
<asp:Parameter Name="confirmed"/>
</UpdateParameters>
</asp:AccessDataSource>
选项1是可能的,如果是这样的话。
如果无法选择选项1,如何按选项2中的方式对更新表格的问题进行排序。
我还在学习Visual Studio,所以感谢所有的帮助。
答案 0 :(得分:0)
我没有在您的数据源中看到更新命令。您是尝试通过aspx页面更新它,还是后面有代码?
尝试在asp:accessDataSource中添加UpdateCommand。我怀疑,目前,当你没有告诉它时,你要求表格更新 a)允许 和 b)如何更新
编辑后。
这是我的头脑。但是尝试添加类似下面的内容(与选择类似)
UpdateCommand="UPDATE tblConfirmedworkhours SET dateWorked=@dateWorked, confirmed =@confirmed where EmpName=@empName">
<UpdateParameters>
<asp:Parameter Name="dateWorked" />
<asp:Parameter Name="confirmed" />
</UpdateParameters>
我在这台电脑上没有VS,所以我暂时无法给出确切的答案。但是,我认为您可能还需要在查询中包含员工编号,因为您可能有2名具有相同名称的员工,并且您需要一个唯一的参考来区分它们。
答案 1 :(得分:0)
我也遇到了很多麻烦并发现了这些帖子中没有出现的内容:我的主要原因是我有一个lastupdated datetime列,这是必需的,并设置了默认值在数据库中。我假设数据库会为我处理它的更新,所以我将它作为GridView中的隐藏列。
经过数小时的挫折,我重新开始并测试了我行动的每一步。然后我发现隐藏一个必填字段就是导致这个问题!您可能还注意到日期格式可能已关闭,具体取决于您的设置,因此如果需要,您还需要以正确的格式提供日期格式。
顺便说一下,它不是一个独特的Access事物;即使使用Ms SQL服务器也会发生这种情况,我想其他数据库也会发生这种情况。
我想这也是有关此报告的几个问题的原因,有时它有效,有时它不会,或者“它适用于一个表而不是另一个表”。&#39;
如果您不希望用户更改某些列的值,请将其设置为模板并将其编辑/添加属性更改为只读。
还有其他方法可以解决这个问题,例如,当隐藏它时,在代码中提供它的值。