グリッドビューをフィルタリングするドロップダウンリストを設定しようとしています。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 イベントの最後の行に追加しましたが、まだ見つからないと言われています。基になるコントロールを見つけることができるように、いつパラメーターを追加できますか?