首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

DataGridView/GridView 合併兩列顯示:用 ViewModel 在綁定前拼接字符串

     編輯:程式設計綜合問答

需求

原數據三列:`數量`、`種類`、`顏色`。
目標顯示兩列:`數量`、`種類(顏色)`。

解決方案:ViewModel 模式(推薦)

**不要在前端控件中硬拼**,而在**數據層/業務層**組裝好顯示所需的模型,再綁定給 GridView。

實現步驟

  1. 定義顯示模型:
    public class ProductViewModel {
          public int Quantity { get; set; }
          public string CategoryWithColor { get; set; } // 已拼接好
      }
  2. 數據獲取後映射:
    var list = dbContext.Products.Select(p => new ProductViewModel {
          Quantity = p.Quantity,
          CategoryWithColor = p.Category + "(" + p.Color + ")"
      }).ToList();
  3. 綁定:
    gridView.DataSource = list;
    gridView.DataBind();

優勢

  • **關注點分離**:顯示邏輯不污染 UI 代碼,易測試、易維護。
  • **性能更好**:拼接在內存中一次性完成,避免控件渲染事件中重複字符串操作。
  • **靈活擴展**:後續需加「規格」、「單位」等,只擴展 ViewModel 即可。

若必須在前端處理(不推薦)

// GridView RowDataBound 事件
protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e) {
    if (e.Row.RowType == DataControlRowType.DataRow) {
        var row = (DataRowView)e.Row.DataItem;
        e.Row.Cells[1].Text = row["Category"] + "(" + row["Color"] + ")";
        e.Row.Cells[2].Visible = false; // 隱藏原顏色列
    }
}

**最佳實踐:數據層組裝 ViewModel,前端純綁定。**

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved