1. 程式人生 > >The name 'xxx' does not exist in the current context 錯誤解決方法之一

The name 'xxx' does not exist in the current context 錯誤解決方法之一

巢狀在內層的asp:datalist或者其他控制元件是無法直接被code behind呼叫的,應該現在外層的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();
    }