zoukankan      html  css  js  c++  java
  • [ASP.net]DataGrid嵌套DataGrid (转)

    开发过程中用到了DataGrid嵌套DataGrid的问题:
    在嵌套的DataGrid里,怎么调用(包含模版非模版)编辑、删除功能。
    ===================================

    在单个DataGrid的操作里对于模版或非模版的编辑删除都很容易实现的,特别是对于非模版的DataGrid,在属性生成器里点两下.cs文件就自动自成代码(感觉在玩VB)。然而对于嵌套在DataGrid或DataList里的DataGrid确没有这样的操作方法,要自行加入梆定代码。

    把摸索过程粘贴出来大家看看!
    ----------------------------

    主DataGrid名:dgM
    嵌套Datagrid名:dgD

    我们可以在界面拖入dgM时生成会在函数:
    private void InitializeComponent()
    {
       
    this.dgM.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler(this.dgM_ItemDataBound);
       this.Load += new System.EventHandler(this.Page_Load);
    }

    上面
    绿色字段为VS.net自动生成的。但在嵌套的dgD里VS.net却没有这样的生成方法。唯有自己用动添加。而添加梆定方法不应该在dgM_ItemDataBound方法里添加(这里有个误区,自己就在这个误区里徘徊了许久),应该在dgM_ItemCreated方法里添加。如:
    private void dgM_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
      {
       if ( e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem )
       {
        
    dgDList = (DataGrid)e.Item.FindControl( "dgD" );
        dgDList.ItemDataBound += new System.Web.UI.WebControls.DataGridItemEventHandler( this.dgD_ItemDataBound );
        dgDList.ItemCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.dgD_ItemCommand);

       }
      }
    如果上面绿色代码是添加在dgM_ItemDataBound方法里,那么dgD_ItemCommand这样的命令是不能调用的。

    现在可以加入dgD的梆定和操作方法了,如:
    private void dgD_ItemCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
      {
            //.......
        }

    ---------------------------------------------------

    另,根据代码的调试得出:
    如果在PageLoad()中加入了如
    if ( ! this.Page.IsPostBack )
       {
        this.BindData();
       }
    这样的代码后,在DataGrid里用编辑、删除等操作时(即服务器控件),DataGrid是不再梆定的,即:DataGrid不再会执行_ItemDataBound这个方法。但_ItemCreated此方法却会执行。这就是为什么不把代码放于_ItemDataBound方法内的原因。
  • 相关阅读:
    如何使用Doxygen生成keil工程的代码文档 (how to use doxygen properly with keil)
    使用matlab画相交的平面
    转载:关于循环异步操作 Promise 实现,ES7 的 await 和 async
    小众软件:相见恨晚的 Windows 系统下的 cmd 的命令行替代者 Cmder(完美神器)
    Windows系统环境下Python脚本实现全局“划词复制”功能
    Ubuntu shell 命令行路径缩短
    shell查找数组是否有特定的值
    保存数据到文件
    左值与右值
    进程与线程的区别
  • 原文地址:https://www.cnblogs.com/dagon007/p/159267.html
Copyright © 2011-2022 走看看