我有页面Default.aspx,其中有控件A和B, A为DataGrid,B为内容编辑问题1:如果对A里的DataGrid进行选择一行,则触发相关事件,而Default.aspx如何能得知此事件?问题2:如果对A选择后切换到B,这个是我的目的,好像直接从A里控制不行,必须通过Default.aspx来执行,也就是问题1了,如何把事件传回去?

解决方案 »

  1.   

    首先在数据控件中放一个button,这个button的CommandArgument属性应该如下: CommandArgument='<%# Eval("sDocumentId").ToString()+","+Eval("sBrand").ToString()+","+Eval("sid").ToString() %>'然后在数据控件的rowcommand事件中写类似如下的程序:
        protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            string[] sCmd = e.CommandArgument.ToString().Split(',');
            TxtId.Text = sCmd[0];
            TxtBrand.Text = sCmd[1];
            HFSid.Value = sCmd[2];
        }最后在在得到id值以后从数据库从读取数据填充控件就可
      

  2.   

    例如
    public class WebUserControl1 : System.Web.UI.UserControl
    {
            
            protected System.Web.UI.WebControls.DataGrid DataGrid1;
            
    private void Page_Load(object sender, System.EventArgs e)
    {
    // 在此处放置用户代码以初始化页面
    }
     
            public delegate void GridSelectEdEventHandler(object sender,System.EventArgs e);
            public event GridSelectEdEventHandler onSelected;        #region Web 窗体设计器生成的代码
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器
    /// 修改此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {
                
                this.DataGrid1.SelectedIndexChanged += new System.EventHandler(this.DataGrid1_SelectedIndexChanged);
                this.Load += new System.EventHandler(this.Page_Load);        }
    #endregion        private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
            {
                if (onSelected != null)
                {
                    onSelected(sender,e);
                }
            }       
    }
      

  3.   

    然后在Default.aspx.cs里就可以对A控件的onSelected事件就行处理了,同理,在A控件里增加一个public的属性,然后Default.aspx.cs里就可以通过访问这个属性来获取当前选中行的信息
      

  4.   

    老大我的是.net 1.11的。有些代码不一样