为什么ASP.net GridView没有更新MS ACCESS记录?

时间:2013-11-22 22:55:47

标签: c# asp.net gridview

我有:

<asp:GridView ID="ClassesGridView" runat="server" AutoGenerateColumns="False" DataKeyNames="CourseNumber" DataSourceID="AccessClasses" 
                AutoGenerateEditButton="True" >
                <Columns>
                    <asp:BoundField DataField="CourseNumber" HeaderText="CourseNumber" ReadOnly="True" SortExpression="CourseNumber" />
                    <asp:BoundField DataField="Teacher1" HeaderText="Teacher1" SortExpression="Teacher1" />
                    <asp:BoundField DataField="T1PhoneNumber" HeaderText="T1PhoneNumber" SortExpression="T1PhoneNumber" />
                    <asp:BoundField DataField="T1Email" HeaderText="T1Email" SortExpression="T1Email" />
                    <asp:BoundField DataField="Teacher2" HeaderText="Teacher2" SortExpression="Teacher2" />
                    <asp:BoundField DataField="T2PhoneNumber" HeaderText="T2PhoneNumber" SortExpression="T2PhoneNumber" />
                    <asp:BoundField DataField="T2Email" HeaderText="T2Email" SortExpression="T2Email" />
                    <asp:BoundField DataField="OrderToVisit" HeaderText="OrderToVisit" SortExpression="OrderToVisit" />
                </Columns>
</asp:GridView>
<asp:AccessDataSource ID="AccessClasses" runat="server" DataFile="~/App_Data/SundaySchool.mdb" 
                SelectCommand="SELECT [CourseNumber], [Teacher1], [T1PhoneNumber], [T1Email], [Teacher2], [T2PhoneNumber], [T2Email], [OrderToVisit] FROM [Classes]"
                UpdateCommand="UPDATE Classes SET Teacher1 = @Teacher1 WHERE CourseNumber = @CourseNumber">
</asp:AccessDataSource>

对于我的生活,我无法弄清楚为什么这不会更新。 &#39;编辑&#39;记录有效,但在更改记录并点击“更新”后什么都没发生。一切都恢复了。

编辑: 这里发生了一些奇怪的事情。如果我在&#39; Teacher2&#39;中设置了一个值列,然后将填充到&#39; Teacher1&#39;柱。 CourseNumber列也不应该是WHERE CourseNumber = @CourseNumber不起作用的原因。

2 个答案:

答案 0 :(得分:1)

您必须更改UpdateCommand,请注意?而不是@

<asp:AccessDataSource ID="AccessClasses" runat="server" DataFile="~/App_Data/SundaySchool.mdb" 
                SelectCommand="SELECT [CourseNumber], [Teacher1], [T1PhoneNumber], [T1Email], [Teacher2], [T2PhoneNumber], [T2Email], [OrderToVisit] FROM [Classes]"
                UpdateCommand="UPDATE Classes SET Teacher1 = ? WHERE CourseNumber = @CourseNumber">
</asp:AccessDataSource>

以下是有关AccessDataSource的更多信息:MSDN

答案 1 :(得分:0)

我想出来了。 UpdateCommand必须完全遵循SelectCommand,主键,CourseNumber除外。 select中的所有内容都必须在更新中正确。一旦我这样做,一切都很好!!