//外层的datagrid绑定方法:
private void dg0_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
{
               ......
               DataGrid dg=new DataGrid();//内层datagrid
               ......
               if(e.Item.ItemType==System.Web.UI.WebControls.ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
{
e.Item.Cells[1].Controls.Add(dg);
}
               dg.EditCommand+=new DataGridCommandEventHandler(this.dg_EditCommand);
               //??????上边一句,我增加后,在方法外写private void dg_EditCommand}
}
private void dg_EditCommand(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{

dg.EditItemIndex=e.Item.ItemIndex;
                            ......
                   }
但dg_EditCommand无法调用dg了。我应该如何写,才对呢???请大侠高手指点!!!!!!!

解决方案 »

  1.   

    don't use ItemDataBound event, use ItemCreated event instead, but do the databinding the outer DataGrid's ItemDataBound event handler
      

  2.   

    <asp:DataGrid id="dg0"
    OnItemCreated="dg0_ItemCreated"
    OnItemDataBound=" dg0_ItemDataBound"private void dg0_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType==System.Web.UI.WebControls.ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
    {
           DataGrid dg=new DataGrid();//内层datagrid
    dg.ID = "mynestedGrid";
    e.Item.Cells[1].Controls.Add(dg);
      dg.EditCommand+=new DataGridCommandEventHandler(this.dg_EditCommand);
              
    }
                  
    }
    private void dg0_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
                   if(e.Item.ItemType==System.Web.UI.WebControls.ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
    {
    DataGrid dg = e.Item.FindControl("mynestedGrid") as DataGrid;
    //call dg.DataBind() if you need to
    }
    }
      

  3.   

    为什么我跳出private void dg0_ItemCreated后
    构造:
    private void dg_EditCommand(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {

    dg.EditItemIndex=e.Item.ItemIndex;
                                ......
                       }
    输入dg.还是没有智能跟踪,也就是说,还是没法调用局部的dg呢??
      

  4.   

    private void dg_EditCommand(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {DataGrid dg = sender as DataGrid;
    or

    DataGrid dg = e.Item.FindControl("mynestedGrid"); dg.EditItemIndex=e.Item.ItemIndex
      

  5.   

    在下写了一个测试,发现dg0_ItemCreated方法运行后,并没有将dg加入到主datagrid中去呀?是怎么回事呢?
    private void Page_Load(object sender, System.EventArgs e)
    {
        this.dg0.Attributes.Add("style","word-break:keep-all;word-wrap:normal");
        if(!IsPostBack)
        {
            Session["px"]="";
            yyrbb();
        }
    }SqlConnection conn=new SqlConnection("Data Source=localhost;Initial Catalog=tdb;uid=sa");
    string yyjs="select name,age from userinfo";
    SqlDataAdapter sda0=new SqlDataAdapter(yyjs,conn);
    DataSet ds0=new DataSet();
    if (ViewState["myDst"] != null)
    ds0=(DataSet)ViewState["myDst"];
    DataTable dt0=new DataTable();
    ds0.Tables.Add(dt0);
    ds0.Tables[0].TableName="dt0";
    sda0.Fill(ds0,"dt0");
    DataGrid dg0=new DataGrid();
    ViewState["myDst"]=ds0;
    dg0.Attributes.Add("style","word-break:keep-all;word-wrap:normal");
    dg0.HeaderStyle.BackColor=System.Drawing.Color.DarkBlue;
    dg0.HeaderStyle.Font.Size=9;
    dg0.HeaderStyle.ForeColor=System.Drawing.Color.White;
    dg0.ItemStyle.Font.Size=9;
    dg0.ItemCreated+=new DataGridItemEventHandler(dg0_ItemCreated);
    dg0.ItemDataBound+=new DataGridItemEventHandler(dg0_ItemDataBound);
    dg0.DataSource=ViewState["myDst"];
    dg0.DataBind();
    }private void dg0_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType==System.Web.UI.WebControls.ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
    {
    //DataGrid dg = e.Item.FindControl("tmpdg") as DataGrid;
    //e.Item.Cells[1].Controls.Add(dg);
    if(e.Item.Cells[1].HasControls()==true)
    {
    e.Item.Cells[0].Text+=e.Item.Cells[1].Controls[0].GetType().ToString();
    }
    else
    {
    e.Item.Cells[0].Text+=" no object";
    }
    }private void dg0_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType==System.Web.UI.WebControls.ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
    {
    DataGrid dg=new DataGrid();
    EditCommandColumn dge=new EditCommandColumn();
    dge.EditText="edit";
    dg.Columns.Add(dge);
    dg.ID="tmpdg";
    e.Item.Cells[1].Controls.Add(dg);
    dg.AutoGenerateColumns=false;
    dg.EditCommand+=new DataGridCommandEventHandler(dg_EditCommand);
    }

    }private void dg_EditCommand(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    DataGrid dg = sender as DataGrid;
    dg.EditItemIndex=e.Item.ItemIndex;
    DataSet dataSet2=new DataSet();
    dataSet2=(DataSet)ViewState["submyDst"];
    ViewState["submyDst"] = dataSet2;
    dataSet2.Tables[0].AcceptChanges();
    dg.DataSource = dataSet2.Tables[0];
    dg.DataBind();
    }
      

  6.   

    how does your page look like?? where did you bind the nested datagrid?private void dg0_ItemDataBound(object sender, DataGridItemEventArgs e)
    {
    if(e.Item.ItemType==ListItemType.Item || e.Item.ItemType== ListItemType.AlternatingItem)
    {
    DataGrid dg = e.Item.FindControl("tmpdg") as DataGrid;
    dg.DataSource = new string[]{"a","b","c"};
    dg.DataBind();
    }}where are these code located??SqlConnection conn=new SqlConnection("Data Source=localhost;Initial Catalog=tdb;uid=sa");
    string yyjs="select name,age from userinfo";
    ....
    dg0.DataBind();
    don't use ViewState to save database infoshow all your code
      

  7.   

    using System;
    using System.Collections;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Web;
    using System.Web.SessionState;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using System.Web.UI.HtmlControls;
    using System.Data.SqlClient;
    namespace webapp1
    {
    /// <summary>
    /// yyglreport 的摘要说明。
    /// </summary>
    public class workreport : System.Web.UI.Page
    {
    protected System.Web.UI.WebControls.Label Label3;
    protected System.Web.UI.WebControls.Label Label2;
    protected System.Web.UI.WebControls.Label Label1;
    protected System.Web.UI.HtmlControls.HtmlGenericControl DIV1;
    protected System.Web.UI.WebControls.Label bzselectname;
    protected System.Web.UI.HtmlControls.HtmlTable hzpx;
    protected System.Web.UI.HtmlControls.HtmlSelect Select6;
    protected System.Web.UI.WebControls.TextBox TextBox1;
    protected System.Web.UI.WebControls.TextBox TextBox2;
    protected System.Web.UI.WebControls.Button Button3;
    protected System.Web.UI.HtmlControls.HtmlSelect Select7;
    protected System.Web.UI.HtmlControls.HtmlGenericControl rightmenu;
    protected System.Web.UI.WebControls.Button Button1;
    protected System.Web.UI.WebControls.Button Button2;
    protected System.Web.UI.WebControls.Calendar Calendar1;
    protected System.Web.UI.WebControls.Calendar Calendar2;
    protected System.Web.UI.WebControls.Label Label4;
    protected System.Web.UI.WebControls.Label Label5;
    protected System.Web.UI.WebControls.Label Label6;
        protected string selectstr;
    protected double hykzf;
    protected double xjzf;
            protected double sjstotal;
    protected double jstotal;
    protected double zltotal;
    protected double cztotal;
    protected double bktotal;
    protected System.Web.UI.WebControls.Label Labelcz;
    protected System.Web.UI.HtmlControls.HtmlGenericControl Div2;
    protected System.Web.UI.WebControls.DataGrid czmx;
    protected System.Web.UI.HtmlControls.HtmlInputButton Button4;
    protected System.Web.UI.WebControls.DataGrid dg0;
    protected double totalzf;
    //protected System.Web.UI.WebControls.DataGrid dg;
    private void Page_Load(object sender, System.EventArgs e)
    {

    hykzf=0.00;
    xjzf=0.00;
    totalzf=0.00;
    sjstotal=0.00;
    jstotal=0.00;
    zltotal=0.00;
    cztotal=0.00;
    bktotal=0.00;
    if(!IsPostBack)
    {

    //SqlConnection conn=new SqlConnection("Data Source=localhost;Initial Catalog=webapp1;Integrated Security=SSPI");
    if(Session["report"].ToString()=="报表")
    {
    Session["px"]="";
    yyrbb();
    }
    }

    }
    private void yyrbb()
    {
    string todaydate=System.DateTime.Now.ToString("yyyy-MM-dd");//取得当天日期

    Label1.Text=Session["report"].ToString()+"<br><font size=2>"+todaydate.ToString();//设定显示标题
    //bzselectname.Visible=true;
    string selgrp="";//分组字段
    string selas="";//分组显示值
    string yyjs="";//查询语句
    Session["selgrp"]="";//初始
    Session["selas"]="";//初始
    if(Select6.Items[Select6.SelectedIndex].Text=="" && TextBox1.Text.ToString().Trim()=="" && TextBox2.Text.ToString().Trim()=="")
    {
    selgrp="工程师";
    selas="按"+selgrp.ToString().Trim()+"分组";
    yyjs="select distinct "+selgrp.ToString()+" as "+selas.ToString().Trim()+",'' as 明细 from 车间明细 where substring(convert(varchar(12),工作时间,121),0,11) = '"+todaydate.ToString()+"'";
    Session["selgrp"]=selgrp.ToString().Trim();
    Session["selas"]=selas.ToString().Trim();
    }
    else
    {
    if(Select6.Items[Select6.SelectedIndex].Text=="")
    {
    selgrp="工程师";
    Session["selgrp"]=selgrp.ToString().Trim();
    selas="按"+selgrp.ToString().Trim()+"分组";
    }
    else
    {
    selgrp=Select6.Items[Select6.SelectedIndex].Text.ToString().Trim();
    selas="按"+Select6.Items[Select6.SelectedIndex].Text.ToString().Trim()+"分组";
    Session["selgrp"]=selgrp.ToString().Trim();
    }
    yyjs="select distinct "+selgrp.ToString()+" as "+selas.ToString().Trim()+",'' as 明细 from 工作明细 where substring(convert(varchar(12),工作时间,121),0,11) >= '"+TextBox1.Text.ToString().Trim()+"' and substring(convert(varchar(12),工作时间,121),0,11) <='"+TextBox2.Text.ToString().Trim()+"'";
    Session["selgrp"]=selgrp.ToString().Trim();
    Session["selas"]=selas.ToString().Trim();
    }

                SqlConnection conn=new SqlConnection("Data Source=localhost;Initial Catalog=webapp1;uid=sa");
    SqlDataAdapter sda0=new SqlDataAdapter(yyjs,conn);
    DataSet ds0=new DataSet();
    if (ViewState["myDst"] != null)
    ds0=(DataSet)ViewState["myDst"];
    DataTable dt0=new DataTable();
    ds0.Tables.Add(dt0);
    ds0.Tables[0].TableName="dt0";
    sda0.Fill(ds0,"dt0");
    //DataGrid dg0=new DataGrid();
    ViewState["myDst"]=ds0;

    dg0.Attributes.Add("style","word-break:keep-all;word-wrap:normal");
    dg0.HeaderStyle.BackColor=System.Drawing.Color.DarkBlue;
    dg0.HeaderStyle.Font.Size=9;
                //dg0.ShowHeader=false;
    dg0.HeaderStyle.ForeColor=System.Drawing.Color.White;
    dg0.ItemStyle.Font.Size=9;
    //dg0.ItemStyle.Wrap=false;
    //dg0.AlternatingItemStyle.Wrap=false;

    dg0.ItemCreated+=new DataGridItemEventHandler(dg0_ItemCreated);
    dg0.ItemDataBound+=new DataGridItemEventHandler(dg0_ItemDataBound); dg0.DataSource=ds0.Tables[0];
    //dg0.DataSource=ViewState["myDst"];
    dg0.DataBind();
    dg0.HeaderStyle.Wrap=false;

    //if(((DataGrid)DIV1.FindControl(DataGrid)).ID=="dg0")
    //{
    //dg0.DataSource=ViewState["myDst"];
    //dg0.DataBind();
    //}
    //else
    //{ //DIV1.Controls.Add(dg0);
    //}
    }
    #region Web Form Designer generated code
    override protected void OnInit(EventArgs e)
    {
    //
    // CODEGEN:该调用是 ASP.NET Web 窗体设计器所必需的。
    //
    InitializeComponent();
    base.OnInit(e);
    }

    /// <summary>
    /// 设计器支持所需的方法 - 不要使用代码编辑器修改
    /// 此方法的内容。
    /// </summary>
    private void InitializeComponent()
    {    
    this.dg0.SelectedIndexChanged += new System.EventHandler(this.DataGrid1_SelectedIndexChanged);
    this.Button1.Click += new System.EventHandler(this.Button1_Click);
    this.Calendar1.SelectionChanged += new System.EventHandler(this.Calendar1_SelectionChanged);
    this.Button2.Click += new System.EventHandler(this.Button2_Click);
    this.Calendar2.SelectionChanged += new System.EventHandler(this.Calendar2_SelectionChanged);
    this.Button3.Click += new System.EventHandler(this.Button3_Click);
    this.Load += new System.EventHandler(this.Page_Load);
    }
    #endregion
      

  8.   

    //下边方法填充子datagrid
    private void dg0_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    string whereval=e.Item.Cells[0].Text.ToString();string todaydate="";
    todaydate=System.DateTime.Now.ToString("yyyy-MM-dd");//取得当天日期
    string xjc="";string px="";
    SqlConnection conn=new SqlConnection("Data Source=localhost;Initial Catalog=webapp1;uid=sa");
    string qzd="select top 1 * from 工作明细";
    SqlDataAdapter sdqzd=new SqlDataAdapter(qzd,conn);
    DataSet dsqzd=new DataSet();DataTable dtqzd=new DataTable();dsqzd.Tables.Add(dtqzd);
    dsqzd.Tables[0].TableName="dtqzd";sdqzd.Fill(dsqzd,"dtqzd");
    if(Session["px"].ToString().Trim()=="")
    {px=Session["selgrp"].ToString().Trim();}
    else{px=Session["px"].ToString().Trim();}
    string tempxjc="select 流水号,派工单号,编号,姓名,工作时间,类型,工程师,技师,小工,convert(money,大件小计) as 大件小计,convert(money,工时费) as 工时费,convert(money,划费) as 划费,convert(money,合计金额) as 合计金额,车间,制单员";
    string bcstr="";
    for(int tmpcol=15;tmpcol<dtqzd.Columns.Count;tmpcol++)
    {
    if(tmpcol%2!=0){
    bcstr=bcstr+","+dtqzd.Columns[tmpcol].ColumnName.ToString().Trim();
          }
    else      {
    bcstr=bcstr+","+dtqzd.Columns[tmpcol].ColumnName.ToString().Trim()+" as "+dtqzd.Columns[tmpcol].ColumnName.ToString().Trim();
          }
    }
    if(TextBox1.Text.ToString().Trim()=="" && TextBox2.Text.ToString().Trim()=="")
    {tempxjc=tempxjc+bcstr+" from 工作明细 where substring(convert(varchar(12),工作时间,121),0,11) = '"+todaydate.ToString()+"' and "+Session["selgrp"].ToString().Trim()+"='"+whereval.ToString()+"' order by "+px.ToString().Trim();}
    else
    {tempxjc=tempxjc+bcstr+" from 工作明细 where substring(convert(varchar(12),工作时间,121),0,11) >= '"+TextBox1.Text.ToString().Trim()+"' and substring(convert(varchar(12),工作时间,121),0,11) <='"+TextBox2.Text.ToString().Trim()+"' and  "+Session["selgrp"].ToString().Trim()+"='"+whereval.ToString()+"' order by "+px.ToString().Trim();}
    SqlDataAdapter sda1=new SqlDataAdapter(tempxjc,conn);DataSet ds1=new DataSet();
    DataTable dt1=new DataTable();ds1.Tables.Add(dt1);ds1.Tables[0].TableName="dt1";
    sda1.Fill(ds1,"dt1");DataSet ds2=new DataSet();
    DataTable lastdt=dt1.Clone();ds2.Tables.Add(lastdt);
    ds2.Tables[0].TableName="lastdt";int maxsubdl=0;
    for(int h=0;h<dt1.Rows.Count;h++)
     {for(int l=15;l<dt1.Columns.Count;l++)
        {if(dt1.Rows[h][l].ToString().Trim().Split('|').Length>maxsubdl)
    {
    maxsubdl=dt1.Rows[h][l].ToString().Trim().Split('|').Length;
    }
        }
        DataTable temprow=dt1.Clone();
    for(int templ=0;templ<maxsubdl;templ++)
    {
    DataRow tempdr=temprow.NewRow();
    temprow.Rows.Add(tempdr);
    }
    for(int qc=0;qc<dt1.Columns.Count;qc++)
    {
    if(qc<14)
    {
    temprow.Rows[0][qc]=dt1.Rows[h][qc].ToString().Trim();
    }
    else
    {
    if(dt1.Rows[h][qc].ToString().Trim().Split('|').Length==0)
    {
    temprow.Rows[0][qc]=dt1.Rows[h][qc].ToString().Trim();
    }
    else
    {
    for(int colds=0;colds<dt1.Rows[h][qc].ToString().Trim().Split('|').Length;colds++)
    {
    temprow.Rows[colds][qc]=dt1.Rows[h][qc].ToString().Trim().Split('|')[colds].ToString().Trim();
    }}}}
    temprow.TableName=lastdt.TableName; ds2.Merge(temprow);
    }
    ArrayList totalrow=new ArrayList();
    DataRow dr=lastdt.NewRow();
    lastdt.Rows.Add(dr);
    double totalje=0.00;
    for(int lastcol=0;lastcol<lastdt.Columns.Count;lastcol++)
    {
    if((lastcol==9 || lastcol==10|| lastcol==11||lastcol==12) || (lastcol>15 && lastcol%2==0))
    {
    for(int lastrow=0;lastrow<lastdt.Rows.Count;lastrow++)
    {
    if(lastcol==10)
    {
    if(lastdt.Rows[lastrow][lastcol].ToString().Trim()=="")
    {
    hykzf=hykzf+0;
    }
    else
    {
    hykzf=hykzf+Convert.ToDouble(lastdt.Rows[lastrow][lastcol].ToString());
    }
    Label4.Text="划费金额:"+hykzf.ToString().Trim();
    }
    if(lastcol==11)
    {
    if(lastdt.Rows[lastrow][lastcol].ToString().Trim()=="")
    {xjzf=xjzf+0;}
    else{xjzf=xjzf+Convert.ToDouble(lastdt.Rows[lastrow][lastcol].ToString());}
    Label5.Text="工时费金额:"+xjzf.ToString().Trim();
    }
    totalzf=hykzf+xjzf+cztotal; Label6.Text="总金额:"+totalzf.ToString().Trim();
      

  9.   

    if(lastdt.Rows[lastrow][lastcol].ToString()=="")
    {
    totalje+=0;
    //ds1.Tables[0].Rows[dt1.Rows.Count-1][lastcol]="";

    }
    else
    {
    totalje=totalje+Convert.ToDouble(lastdt.Rows[lastrow][lastcol].ToString());
    }
    }
    totalrow.Add(totalje.ToString());
    lastdt.Rows[lastdt.Rows.Count-1][lastcol]=totalje.ToString();
    //ds1.Tables["lastdt"].Rows[lastdt.Rows.Count-1][lastcol]=totalje.ToString();
    totalje=0.00;

    }
    else
    {
    totalrow.Add("");
    //ds1.Tables[0].Rows[dt1.Rows.Count-1][lastcol]=null;
    }
    }

    //生成提成
    //string qbl="select 提成比例设定.* from goodstable right join 提成比例设定 on goodstable.nodetc=提成比例设定.档次 where goodstable.nodename='";
    DataRow dr1=lastdt.NewRow();
    lastdt.Rows.Add(dr1);
    //double totalje=0.00;
    double totaltc=0.00;
    for(int lastcol=0;lastcol<lastdt.Columns.Count;lastcol++)
    {
    if(lastcol>15 && lastcol%2==0)
    {
    string qbl="select 提成比例设定.* from 人员管理 right join 提成比例设定 on 人员管理.提成设定=提成比例设定.提成方式 where 提成比例设定.业务大类名称='"+lastdt.Columns[lastcol].ColumnName.ToString().TrimEnd('金','额').ToString().Trim()+"' and 人员管理.姓名 like '"+whereval.ToString().Trim()+"%'";
    SqlDataAdapter tcsda=new SqlDataAdapter(qbl,conn);
    DataSet tcds=new DataSet(); DataTable tcdt=new DataTable(); tcds.Tables.Add(tcdt);
    tcds.Tables[0].TableName="tcdt";tcsda.Fill(tcds,"tcdt");
    double lasttc=0.00;
    for(int t=0;t<tcdt.Rows.Count;t++)
    {
    if(tcdt.Rows[t][5].ToString().Trim()!="0" &&  tcdt.Rows[t][5].ToString().Trim()!="")
    {
    for(int yt=0;yt<lastdt.Rows.Count-2;yt++)  
    {
    if(lastdt.Rows[yt][lastcol].ToString().Trim()!="0" && lastdt.Rows[yt][lastcol].ToString().Trim()!="")
    {
    lasttc=lasttc+Convert.ToDouble(tcdt.Rows[t][5].ToString().Trim());

    }
    }break;
    }
    else
    {
    if(Convert.ToDouble(lastdt.Rows[lastdt.Rows.Count-2][lastcol].ToString().Trim())>=Convert.ToDouble(tcdt.Rows[t][2].ToString().Trim()) && Convert.ToDouble(lastdt.Rows[lastdt.Rows.Count-2][lastcol].ToString().Trim())<=Convert.ToDouble(tcdt.Rows[t][3].ToString().Trim()))
    {
    lasttc=lasttc+Convert.ToDouble(lastdt.Rows[lastdt.Rows.Count-2][lastcol].ToString().Trim())*Convert.ToDouble(tcdt.Rows[t][4].ToString().Trim())/100;

    break;
    }
    }break;
    }lastdt.Rows[lastdt.Rows.Count-1][lastcol-1]="提成金额:"+lasttc.ToString().Trim();
    totaltc=totaltc+lasttc;

    lasttc=0.00;
    if(Session["selgrp"].ToString().Trim()=="工程师" && whereval.ToString().Trim()!="无" && whereval.ToString().Trim()!="")
    {
    lastdt.Rows[lastdt.Rows.Count-1][0]=totaltc.ToString().Trim();
    }
    else
    {
    if(Session["selgrp"].ToString().Trim()=="技师"  && whereval.ToString().Trim()!="无" && whereval.ToString().Trim()!="")
    {
    lastdt.Rows[lastdt.Rows.Count-1][0]=totaltc.ToString().Trim();
    }
    else
    {
    if(Session["selgrp"].ToString().Trim()=="小工"  && whereval.ToString().Trim()!="无" && whereval.ToString().Trim()!="")
    {
    lastdt.Rows[lastdt.Rows.Count-1][0]=totaltc.ToString().Trim();
    }
    }
    }
    }

    }totaltc=0.00;


    dg.AutoGenerateColumns=false;

    System.Web.UI.WebControls.EditCommandColumn edits=new EditCommandColumn();
    edits.EditText="编辑";
    edits.UpdateText="更新";
    edits.CancelText="取消";
    //edits.CancelText="取消";
    //edits.UpdateText="更新";
    //edits.ButtonType=System.Web.UI.WebControls.ButtonColumnType.LinkButton;
    dg.Columns.Add(edits);
            

    for(int s=0;s<ds2.Tables[0].Columns.Count;s++)
    {
    System.Web.UI.WebControls.BoundColumn bc=new BoundColumn();
    bc.DataField=ds2.Tables[0].Columns[s].ColumnName;
    bc.HeaderText=ds2.Tables[0].Columns[s].ColumnName.ToString();
    bc.HeaderStyle.Wrap=false;
    bc.HeaderStyle.BackColor=System.Drawing.Color.DodgerBlue;
    bc.HeaderStyle.ForeColor=System.Drawing.Color.White;
    bc.ItemStyle.Wrap=false;
    bc.HeaderStyle.Font.Size=9;
    bc.ItemStyle.Font.Size=9;
    dg.Columns.Add(bc);
    if(ds2.Tables[0].Columns[s].ColumnName.ToString().Trim()!="工作时间")
    {
    Select6.Items.Add(new ListItem(ds1.Tables[0].Columns[s].ColumnName.ToString(),ds1.Tables[0].Columns[s].ColumnName.ToString()));
    Select7.Items.Add(new ListItem(ds1.Tables[0].Columns[s].ColumnName.ToString(),ds1.Tables[0].Columns[s].ColumnName.ToString()));
    }
    }
    dg.DataSource=ds2.Tables[0].DefaultView;
    dg.DataBind();
    ViewState["submyDst"]=new DataSet();
    }
    }
    private void Calendar1_SelectionChanged(object sender, System.EventArgs e)
    {
    TextBox1.Text=Calendar1.SelectedDate.ToString("yyyy-MM-dd");
    Calendar1.Visible=false;
    Calendar1.SelectedDate=Convert.ToDateTime("0001-1-1 00:00:00");
    }
    private void Calendar2_SelectionChanged(object sender, System.EventArgs e)
    {
    TextBox2.Text=Calendar2.SelectedDate.ToString("yyyy-MM-dd");
    Calendar2.Visible=false;
    Calendar2.SelectedDate=Convert.ToDateTime("0001-1-1 00:00:00");
    } private void Button1_Click(object sender, System.EventArgs e)
    {
    Calendar1.Visible=true;
    Calendar2.Visible=false;
    } private void Button2_Click(object sender, System.EventArgs e)
    {
    Calendar2.Visible=true;
    Calendar1.Visible=false;
    }
    private void Button3_Click(object sender, System.EventArgs e)
    {
    //DIV1.Controls.Remove(dg0);
    Session["px"]=Select7.Items[Select7.SelectedIndex].Value.ToString().Trim();
    ViewState["myDst"]=new DataSet();
    yyrbb(); }
    private void dg0_ItemCreated(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if(e.Item.ItemType==System.Web.UI.WebControls.ListItemType.Item || e.Item.ItemType==ListItemType.AlternatingItem)
    {
    DataGrid dg=new DataGrid();
    EditCommandColumn dge=new EditCommandColumn();
    dge.EditText="edit";
    dg.Columns.Add(dge);
    dg.ID="tmpdg";
    e.Item.Cells[1].Controls.Add(dg);
    dg.AutoGenerateColumns=false;
    dg.EditCommand+=new DataGridCommandEventHandler(dg_EditCommand);
    }

    } private void dg_EditCommand(object sender, System.Web.UI.WebControls.DataGridCommandEventArgs e)
    {
    DataGrid dg = sender as DataGrid;
    dg.EditItemIndex=e.Item.ItemIndex;
    DataSet dataSet2=new DataSet();
    dataSet2=(DataSet)ViewState["submyDst"];
    ViewState["submyDst"] = dataSet2;
    dataSet2.Tables[0].AcceptChanges();
    dg.DataSource = dataSet2.Tables[0];
    dg.DataBind();
    } private void dg_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    for(int kj=0;kj<e.Item.Cells.Count;kj++)
    {
    if(e.Item.Cells[kj].Text.ToString().Trim().StartsWith("<划费>")==true)
    {
    e.Item.Cells[kj].BackColor=System.Drawing.Color.Green;
    e.Item.Cells[kj].ForeColor=System.Drawing.Color.White;
    }
    }
    }
            

    }
    }
      

  10.   

    oh, god, your code is unmaintainable, try to movedg0.ItemCreated+=new DataGridItemEventHandler(dg0_ItemCreated);
    dg0.ItemDataBound+=new DataGridItemEventHandler(dg0_ItemDataBound);
    into InitializeComponent()
      

  11.   

    参考下这个
    http://singlepine.cnblogs.com/articles/312975.html