在LinqDataSource中找不到控件参数的控件

时间:2012-04-14 21:05:40

标签: c# linq gridview

我正在尝试设置一个下拉列表来过滤网格视图。这是我如何初始化ddl:

public partial class MyClass : System.Web.UI.Page
{
  DropDownList brList;

  protected void Page_Init(object sender, EventArgs e)
  {
    brList = new DropDownList();
    brList.ClientIDMode = System.Web.UI.ClientIDMode.Static;
    brList.ID = "ddlBR";
  }

...

稍后在gridview的prerender事件期间,我构建了一个新的gridview行,将数据添加到下拉列表并将其插入gridview的第一行:

  //filter for BR
  TableHeaderCell brCell = new TableHeaderCell();
  brList.AutoPostBack = true;
  brList.Items.Add(new ListItem(" ", "%"));
  brList.DataSource = ldsBrCodes;
  brList.AppendDataBoundItems = true;
  brList.DataTextField = "BR";
  brList.DataValueField = "BR";
  brList.DataBind();
  brCell.Controls.Add(brList);
  theNewRow.Cells.Add(brCell);

这是填充gridview的LinqDataSource:

<asp:LinqDataSource ID="ldsMyLDS" runat="server" 
    ContextTypeName="DataClassesDataContext" EntityTypeName="" 
    TableName="vwMyReport"  AutoGenerateWhereClause="true">
    <WhereParameters>
      <asp:Parameter DefaultValue="W" Name="MPC" Type="String" />
      <asp:ControlParameter Name="BR" ControlID="ddlBR" Type="String" />
    </WhereParameters>
  </asp:LinqDataSource>

我收到错误:无法在ControlParameter'BR'中找到控件'ddlBR'。

我猜这是一个页面生命周期问题,当我尝试添加此参数时。我也尝试在后面的代码中添加参数:

ldsMyLDS.WhereParameters.Add(new ControlParameter("paramBR", System.Data.DbType.String, "ddlBR", "BR"));

我已将它添加到gridview PreRender事件的最后一行,但仍然说它无法找到。何时可以添加参数以便找到基础控件?

0 个答案:

没有答案