我正在尝试设置一个下拉列表来过滤网格视图。这是我初始化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);
这是填充网格视图的 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 事件的最后一行,但它仍然说找不到它。什么时候可以添加参数以便可以找到底层控件?