不在同一个目录下面,MyDataGrid放在common目录下,WebForm1.aspx放在另外一个目录下,这样会有问题吗,一般公用的东西都放在另外一个目录下啊

解决方案 »

  1.   

    我也是了一下,没发现有什么问题!代码如下:
    /// <summary>
    /// WebCustomControl1 的摘要说明。
    /// </summary>
    public class WebCustomControl1 : System.Web.UI.WebControls.DataGrid
    {
    protected override void OnSelectedIndexChanged(EventArgs e) {
    base.OnSelectedIndexChanged (e);
    } }namespace WebApplication1
    {
    /// <summary>
    /// WebForm1 的摘要说明。
    /// </summary>
    public class WebForm1 : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.DataGrid DataGrid1;
    protected WebControlLibrary1.WebCustomControl1 WebCustomControl11;

    private void Page_Load(object sender, System.EventArgs e)
    {
    DataTable dt = new DataTable();
    dt.Columns.Add("AAA");
    dt.Rows.Add(new object[] { "a" });
    dt.Rows.Add(new object[] { "b" });
    dt.Rows.Add(new object[] { "c" });
    dt.Rows.Add(new object[] { "d" }); this.DataGrid1.DataSource = dt;
    this.DataGrid1.DataBind(); this.WebCustomControl11.DataSource = dt;
    this.WebCustomControl11.DataBind();
    } #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.WebCustomControl11.SelectedIndexChanged += new System.EventHandler(this.WebCustomControl11_SelectedIndexChanged);
    this.Load += new System.EventHandler(this.Page_Load); }
    #endregion private void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e) {
    System.Diagnostics.Debug.WriteLine("1");
    } private void WebCustomControl11_SelectedIndexChanged(object sender, System.EventArgs e) {
    System.Diagnostics.Debug.WriteLine("2");
    }
    }
    }
      

  2.   

    多谢楼上的,发现问题所在,缺少了
      base.OnSelectedIndexChanged(e)语句。
      可是如果控件放在WebUserControl.ascx里面还是不行啊!!
      

  3.   

    自己搞定了,原因是DataGrid如果放在ascx中,每行的编码格式与放在aspx中不同,多增加了ascx控件的ID。
      多谢各位,散分。