1. ホーム
  2. ASP.NET

名前 'xxx' が現在のコンテキストに存在しない エラー解決方法の1つ

2022-02-17 15:04:10

ネストされた内側のasp:datalistまたは他のコントロールは、後ろのコードによって直接呼び出すことができません、それは今、外側のdatalistにイベントonitemdataboundイベントハンドラを追加する必要があります。 次のメソッドを使用します。

aspxファイルです。

<スパン

<asp:DataList ID="DataList1" runat="server" OnItemDataBound="DataList1_DataBinding">
	<ItemTemplate>
		<asp:Label runat="server" ID="L" Text='<%#DataBinder.Eval(Container.DataItem,"id") %>'></ asp:Label>
                    <%#DataBinder.Eval(Container.DataItem,"name") %>
                    <br />
                    <asp:DataList runat="server" ID="DataList2">
                        <ItemTemplate>
                              
                            <%#DataBinder.Eval(Container.DataItem,"boardtype") %>
                            <br />
                        </ItemTemplate>
		</asp:DataList>
	</ItemTemplate>
</asp:DataList>

asxp.csファイルです。(イベントハンドラ関数にインナーDataListのデータボーンを追加する)

<スパン

protected void Page_Load(object sender, EventArgs e)
    {
        SQL sql = new SQL("select * from bigsorts");
        SqlDataAdapter sda = sql.GetSqlDataAdapter();
        DataSet ds = new DataSet();
        sda.Fill(ds,"table1");
        DataList1.DataSource = ds;
        DataList1.DataBind();
        sql.CloseConn();
        Response.Write(ConfigurationManager.ConnectionStrings["LocalSqlServer"].ToString());
    }

    protected void DataList1_DataBinding(object sender, DataListItemEventArgs e)
    {
        DataList dl = (DataList)e.Item.FindControl("DataList2");
        Label l = (Label)e.Item.FindControl("L");
        SQL sql = new SQL("select * from tblsorts where parentid=" + l.Text);
        SqlDataAdapter sda = sql.GetSqlDataAdapter();
        DataSet ds = new DataSet();
        sda.Fill(ds, "table");
        dl.DataSource = ds;
        dl.DataBind();
    }