使用sql数据源在转发器的项模板中绑定下拉列表

时间:2008-12-02 15:00:18

标签: asp.net

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

1 个答案:

答案 0 :(得分:0)

是的,据我所知,如果你没有将缓存设置为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();
    }
}