![](/img/trans.png)
[英]C# Visual Studio: How do I update GridView without activating validators for other fields?
[英]How do I update an an Access database from a GridView in Visual Studio?
我正在嘗試在 Visual Studio 2010 中使用網格視圖時更新訪問數據庫,但沒有任何成功。 讓我試着解釋一下我所擁有的。
我有一個包含“tblConfirmedworkhours”表的訪問數據庫,其中包含“dateworked”和“confirmed”字段。 我可以使用編輯/更新鏈接在我的網頁上顯示過濾后的表格,但表格不會更新。
選項 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,因此非常感謝任何幫助。
我在您的數據源中沒有看到更新命令。 您是想通過 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 名同名員工,並且您需要一個唯一的參考來區分他們。
我也遇到了很多麻煩,並發現了這些帖子中沒有出現的內容:對我來說,主要原因是我有一個 lastupdated 日期時間列,這是必需的,並且在數據庫中設置了默認值. 我假設數據庫會為我處理它的更新,所以我把它作為 GridView 中的一個隱藏列。
經過數小時的挫折,我重新開始並測試我的每一步行動。 然后我發現隱藏必填字段是導致此問題的全部原因! 您可能還會注意到日期格式可能已關閉,具體取決於您的設置,因此如果需要,您還需要以正確的格式提供它。
順便說一下,它不是一個獨特的 Access 東西; 它甚至會發生在 Ms SQL 服務器上,我想其他數據庫也會發生。
我想這也是關於這份報告的幾個問題“有時有效,有時無效”或“它適用於一張桌子而不適用於另一張桌子”的原因。
如果您不希望用戶更改某些列的值,請將它們設置為模板並將其編輯/添加屬性更改為只讀。
還有其他方法可以解決這個問題,例如,在隱藏時在代碼后面提供它的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.