代码之家  ›  专栏  ›  技术社区  ›  Chris Westbrook

使用sql数据源绑定中继器项目模板中的下拉列表

  •  0
  • Chris Westbrook  · 技术社区  · 16 年前

    我们的页面出现了一些性能问题,我想问一下。如果我有一个中继器,并且在中继器的itemtemplate中有一个绑定到sql数据源的下拉列表,那么即使每次返回相同的结果,每个项目都会调用一次select命令吗?如果是这样,作为快速修复,是否将启用缓存设置为true,并指定缓存持续时间,以确保查询在每个页面生命周期只运行一次?我知道我应该使用对象数据源,但现在我想尽快解决这个问题。提前感谢。

    1 回复  |  直到 16 年前
        1
  •  0
  •   Mitchel Sellers    16 年前

    是的,据我所知,如果你没有将缓存设置为true,它将为每次数据绑定调用执行查询。

    就个人而言,你最好查询结果,然后在ItemDataBound事件中手动绑定它,而不是费心使用SQL数据源,但是,如果你目前的担忧得到了解决,那么当前的配置缓存应该会有很大的帮助!

    更新

    添加以下内容以回应评论。

    Page_Load在命令链中首先执行,您可以声明一个页面级变量来保存数据表,然后在项目数据绑定事件中,您可以将其用于绑定,如果是CS,则类似于此。这只是一个部分示例。…只是为了让大家明白这个想法。

    partial class MyPage
    {
        private DataTable _ddlData;
    
        protected void Page_Load(object sender, EventArgs e)
        {
            //Logic to fill _ddlData and then bind the repeater goes here
        }
    
        protected void Grid_ItemDataBound() //I forgot the proper parameters here
        {
            //Properly check for e.item.itemtype = Item or Alt item
            DropDownList oList = (DropDownList)e.item.findcontrol("ddlItems"); //lookup for your item
            oList.DataSource = _ddlData;
            oList.DataBind();
        }
    }
    
    推荐文章