GridView為我們浏覽更新數據提供了一個方便的途徑。我們只需要添加一個sqldatasouce控件和一個GridView,再為sqldatasource寫上正確的UpdateCommand語句就可以達到自動更新數據的目的。基本上無需手寫更新代碼:但在寫UpdateCommand語句時,需注意,updateCommand中各Sql更新參數的順序必須與頁面輸出數據的順序一致.
舉個例子:
若頁面元素順序如下:
<asp:BoundField DataField="id" HeaderText="紀錄號" ReadOnly="True" Visible="false" />
<asp:TemplateField HeaderText="公司名稱">
<ItemTemplate>
<asp:label ID="DisCompanyName" runat="server" Width="100" Text='<%# Eval("CompanyName") %>'></asp:label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtCompanyName" Width="100" Text='<%# Bind("CompanyName") %>' runat="server"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="公司地址">
<ItemTemplate>
<asp:label ID="DisCompanyAddress" Text='<%# Eval("CompanyAddress") %>' runat="server" Width="100"></asp:label>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtCompanyAddress" Text='<%# Bind("CompanyAddress") %>' runat="server" Width="100"></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>
則在寫SqlDataSource的updateCommand語句時應該寫成以下順序:
Update [***] Set CompanyName=@CompanyName,CompanyAddress=@CompanyAddress where id=@id
而不能寫成:
Update [***] Set CompanyAddress=@CompanyAddress,CompanyName=@CompanyName where id=@id
寫法2會造成將CompanyAddress的數據寫入CompanyName字段,而將CompanyName的數據寫入CompanyAddress的混亂.