處理大量同類資料新增(如同一供應商、分類的多筆產品)時,單筆新增介面效率低、易錯。本文實作批次新增介面:一次選擇供應商/分類,輸入多筆產品名稱/價格,按鈕送出,以事務確保原子性。
<asp:Panel ID="DisplayInterface" runat="server">
<asp:GridView ID="gvProducts" ... />
<asp:Button ID="btnProcessShipment" Text="處理出貨" OnClick="btnProcessShipment_Click" />
</asp:Panel>
<asp:Panel ID="InsertInterface" runat="server" Visible="false">
<!-- 供應商/分類 DDL -->
<asp:DropDownList ID="ddlSuppliers" ... />
<asp:DropDownList ID="ddlCategories" ... />
<!-- 動態產品輸入列 -->
<asp:Button ID="btnAddProducts" Text="新增產品" OnClick="btnAddProducts_Click" />
<asp:Button ID="btnCancel" Text="取消" OnClick="btnCancel_Click" />
</asp:Panel>
[System.ComponentModel.DataObjectMethodAttribute
(System.ComponentModel.DataObjectMethodType.Insert, true)]
public void InsertProductsWithTransaction(
int supplierID, int categoryID,
List<string> productNames, List<decimal> unitPrices)
{
using (TransactionScope scope = new TransactionScope())
{
foreach (var i in Enumerable.Range(0, productNames.Count))
{
if (!string.IsNullOrEmpty(productNames[i]))
{
productsAdapter.Insert(
productNames[i], supplierID, categoryID,
"預設包裝", unitPrices[i], 0, 0, 0, false);
}
}
scope.Complete(); // 全部成功才 Commit
}
}
批次新增介面結合事務,大幅提升大量同屬性資料錄入效率與正確性。Panel 切換模式簡單實用,TransactionScope 確保資料一致性。