<asp:Repeater runat="server" ID="Re1" onitemdatabound="Repeater1_ItemDataBound">
            <HeaderTemplate>
                <table>
                    <tr>
                        <td>
                            City_ID
                        </td>
                        <td>
                            City_Name
                        </td>
                        <td>
                            省份
                        </td>
                    </tr>
            </HeaderTemplate>
            <ItemTemplate>
                <tr>
                    <td>
                        <%#Eval("City_ID") %>
                        <asp:HiddenField ID="HiddenField1" runat="server" />
                    </td>
                    <td>
                        <%#Eval("City_Name") %>
                    </td>
                    <td>
                        <asp:Repeater runat="server" ID="Re2">
                            <ItemTemplate>
                                <%#Eval("Province_Name") %>
                            </ItemTemplate>
                        </asp:Repeater>
                    </td>
                </tr>
            </ItemTemplate>
            <FooterTemplate>
                </table></FooterTemplate>
        </asp:Repeater>
protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            Bind();
        }
    }
    public void Bind()
    {
        using (SqlConnection conn = new SqlConnection())
        {
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["MyShopConnection"].ConnectionString;
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = "select * from City";
            cmd.Connection = conn;
            Re1.DataSource = cmd.ExecuteReader();
            Re1.DataBind();
        }
    }
    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        Repeater Ree2 = e.Item.FindControl("Re2") as Repeater;
        HiddenField file = e.Item.FindControl("HiddenField1") as HiddenField;
        string cmdstr = "select * from Province where City_ID='" + file.Value + "'";
        using (SqlConnection conn = new SqlConnection())
        {
            conn.ConnectionString = ConfigurationManager.ConnectionStrings["MyShopConnection"].ConnectionString;
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandText = cmdstr;
            cmd.Connection = conn;
            Ree2.DataSource = cmd.ExecuteReader();
            Ree2.DataBind();
        }
    }
一直取不到HiddenFile的值啊
一直提示未将对象引用到实例
哪里错了?

解决方案 »

  1.   

    我隐约记得:子Repeater控件中如果用datareader做数据源的话,好像要改变点写法。。如果用datatable就没有问题,楼主试一下。学习
      

  2.   

    试了还是不行
    好象取不到那个HiddenFile的值
    断点试了下总是为null
      

  3.   

    你是不是就没有给HiddenFile赋值啊
      

  4.   

    因为你有HeaderTemplate,所以在ItemDataBound里加上判断
    if (e.Item.ItemType == ListItemType.AlternatingItem 
        || e.Item.ItemType == ListItemType.Item)
      

  5.   

    protected void Repeater1_ItemDataBound(object sender, RepeaterItemEventArgs e)
        {
            if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
            {
                Repeater Ree2 = e.Item.FindControl("Re2") as Repeater;
                HiddenField file = e.Item.FindControl("HiddenField1") as HiddenField;
                string cmdstr = "select * from Province where City_ID='" + file.Value + "'";
                using (SqlConnection conn = new SqlConnection())
                {
                    conn.ConnectionString = ConfigurationManager.ConnectionStrings["MyShopConnection"].ConnectionString;
                    conn.Open();
                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandText = cmdstr;
                    cmd.Connection = conn;
                    Ree2.DataSource = cmd.ExecuteReader();
                    Ree2.DataBind();
                }
            }
        }
      

  6.   

    你肯定取不到啦,你都没有给它值,你怎么取得,应该这样,<asp:HiddenField ID="HiddenField1" Value='<%#Eval("City_ID") %>'
     runat="server" />总之就这个格式,你给它值,自然而然就取到啦!呵呵