我有一个自定义控件,里面有2个RadioButton 都设置了AutoPostBack
当选择其中一个时候,调用上级页面(即引用这个控件的页面)的一个函数,
该如何写代码,C#

解决方案 »

  1.   

    参考:
                if (!object.Equals(Request.QueryString["ReturnUrl"], null))
                {
                    string fromurl = Request.QueryString["ReturnUrl"].ToString().Trim();
                    if (fromurl != "")
                    {
                        ViewState["url"] = fromurl;
                    }
                }
                else
                {
                    if (!object.Equals(Request.ServerVariables["Http_Referer"], null))
                    {
                        string urlrefer = Request.ServerVariables["Http_Referer"].ToString().Trim().ToLower();
                        string thisurl = Request.Url.ToString().ToLower();
                        if (urlrefer != "" && urlrefer.IndexOf("/login.aspx") == -1 && thisurl.IndexOf(urlrefer) == -1)
                        {
                            ViewState["url"] = urlrefer;
                        }
                    }
                }
      

  2.   

    我明白lz的意思了,lz换个思路,用事件驱动模型解决这个问题,为控件添加一个事件:public event EventHandler EventName;在RadioButton的处理事件中添加if (null != EventName)
    {
        EventName(this, null);
    }在页面上只要注册this.userControl.EventName += new EventHandler(userControl_EventName);
    根据具体需要选择你的委托delegate原形。
    参考一下这篇帖子:
    http://topic.csdn.net/u/20071117/21/d515fe07-33a3-43fe-b7a3-18f3d5882b55.html

      

  3.   

    用户控件:
    MyRadioButtonList.ascx<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyRadioButtonList.ascx.cs" Inherits="MyRadioButtonList" %>
    <asp:RadioButtonList ID="rblColors" runat="server" OnSelectedIndexChanged="rblColors_SelectedIndexChanged" AutoPostBack="True">
        <asp:ListItem Text="Red" Value="Red" Selected="true" />
       <asp:ListItem Text="Green" Value="Green" />
       <asp:ListItem Text="Yellow"  Value="Yellow" /> 
    </asp:RadioButtonList>MyRadioButtonList.ascx.csusing System;
    using System.Data;
    using System.Configuration;
    using System.Collections;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class MyRadioButtonList : System.Web.UI.UserControl
    {
        /// <summary>
        /// Occurs when the selected index of the color list is changed.
        /// </summary>
        public event EventHandler SelectedIndexChanged;    /// <summary>
        /// Gets the selected value of the color list.
        /// </summary>
        public string SelectedValue
        {
            get
            {
                return rblColors.SelectedValue;
            }
        }    protected void rblColors_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (null != SelectedIndexChanged)
            {
                SelectedIndexChanged(this, e);
            }
        }
    }
    调用页面:
    Default.aspx// ...
    <%@ Register Src="~/MyRadioButtonList.ascx" TagName="MyRadioButtonList" TagPrefix="uc1" %>
    // ...
    <uc1:MyRadioButtonList id="MyRadioButtonList1" runat="server" OnSelectedIndexChanged="MyRadioButtonList1_SelectedIndexChanged">
    </uc1:MyRadioButtonList>
    // ...Default.aspx.csusing System;
    using System.Data;
    using System.Configuration;
    using System.Web;
    using System.Web.Security;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.WebControls.WebParts;
    using System.Web.UI.HtmlControls;public partial class _Default : System.Web.UI.Page 
    {
        protected void MyRadioButtonList1_SelectedIndexChanged(object sender, EventArgs e)
        {
            Response.Write(MyRadioButtonList1.SelectedValue);
        }
    }