在网格的 ItemDataBound 事件中填充 Column 中的 DropDownList,而无需每次访问数据库
Populate DropDownList in Column within grid's ItemDataBound event without accessing the database each time
我在 ASP.NET 中有一个网格,其中有一列包含 DropDownLists。
下面是网格的示例:
项目列 | DropDownCol
项目 1 |下拉列表
项目 2 |下拉列表
第 3 项 |下拉列表
我知道用其值填充每个 DropDownList 的唯一方法是在网格的 ItemDataBound 事件中,如下所示:
if (e.Item is GridDataItem)
{
GridDataItem item = (GridDataItem)e.Item;
IEnumerable<ProductCategory> productCategoryList = ProductService.GetProductCategories();
RadComboBox cbProductCategory = item.FindControl("cbProductCategory") as RadComboBox;
cbProductCategory.DataValueField = "Id";
cbProductCategory.DataTextField = "CategoryName";
cbProductCategory.DataSource = productCategoryList;
cbProductCategory.DataBind();
}
由于我们处于 ItemDataBound 事件中,因此每次调用 GetProductCategories 函数时我都会调用数据库。
获取我的产品类别列表,将其存储在某处,然后使用存储的版本来绑定每个 DropDownList 的最佳方法是什么?
您可以在代码隐藏文件中创建一个字段,然后在 Page_Load 中用信息填充 productCategoryList。这样你只能在 page_load.
上访问数据库
private IEnumerable<ProductCategory> productCategoryList;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
productCategoryList = ProductService.GetProductCategories();
}
}
然后就像您拥有的那样进行数据绑定。
我在 ASP.NET 中有一个网格,其中有一列包含 DropDownLists。
下面是网格的示例:
项目列 | DropDownCol
项目 1 |下拉列表
项目 2 |下拉列表
第 3 项 |下拉列表
我知道用其值填充每个 DropDownList 的唯一方法是在网格的 ItemDataBound 事件中,如下所示:
if (e.Item is GridDataItem)
{
GridDataItem item = (GridDataItem)e.Item;
IEnumerable<ProductCategory> productCategoryList = ProductService.GetProductCategories();
RadComboBox cbProductCategory = item.FindControl("cbProductCategory") as RadComboBox;
cbProductCategory.DataValueField = "Id";
cbProductCategory.DataTextField = "CategoryName";
cbProductCategory.DataSource = productCategoryList;
cbProductCategory.DataBind();
}
由于我们处于 ItemDataBound 事件中,因此每次调用 GetProductCategories 函数时我都会调用数据库。
获取我的产品类别列表,将其存储在某处,然后使用存储的版本来绑定每个 DropDownList 的最佳方法是什么?
您可以在代码隐藏文件中创建一个字段,然后在 Page_Load 中用信息填充 productCategoryList。这样你只能在 page_load.
上访问数据库private IEnumerable<ProductCategory> productCategoryList;
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
productCategoryList = ProductService.GetProductCategories();
}
}
然后就像您拥有的那样进行数据绑定。