我在一个aspx中放了3个ascx,每个ascx中都用一个DataList控件。 
假如我在1.ascx的DataList中写: 
<ItemTemplate> 
<asp:HyperLink id="BookLink" NavigateURL='<%# "../../BookShop/catalog.aspx? SectionId=" + DataBinder.Eval(Container.DataItem, "catalogSectionId") %>' Text='<%# DataBinder.Eval(Container.DataItem, "catalogSectionName") %>' runat="server"> 
</asp:HyperLink> 
在2.ascx文件的cs文件中使用Request.QueryString["SectionId"]接收。 
可是每次点击后aspx页面刷新后,发现接收的SectionId根本就是空的。 
请教2.ascx中如何能收到1.ascx发过来的SectionId值?? 
有人说用属性,可我这是通过DataList传的值,我不会弄。 
有谁会,请教教我,十分感谢了

解决方案 »

  1.   

    在主体页面上获取1.ascx和2.ascx,参数可以通过用户控件的全局变量来定义。
      

  2.   

    XXAscx  obj;
    obj = (XXAscx) this.Page.FindControl("1ascx");
    obj.Para1= SectionId;
    XXAscx 为你的用户空间的类名
    1ascx为你在页面定义的此用户空间的名字,即ID
      

  3.   

    Para1 为你在用户空间中定义的一个Public的变量
      

  4.   

    XXAscx是1.ascx的类名还是2.ascx的?
    这段代码在1.ascx的类名还是2.ascx中写?
      

  5.   

    bady_happy其实已经讲得很清楚了。
    XXAscx  obj;
    obj = (XXAscx) this.Page.FindControl("1ascx");//这里是获取XXAscx对象。
    obj.Para1= SectionId;//这里是设置XXAscx对象中的一个值。
    在1.ascx中设置它的属性。
    例如:
    public string Para1
    {
    set{}
    get{}
    }