见:http://community.csdn.net/Expert/TopicView.asp?id=3487517

解决方案 »

  1.   

    http://xml.sz.luohuedu.net/xml/ShowDetail.asp?id=149E5DD7-3B32-461e-ACC6-51D1652E6746
      

  2.   

    楼上的你给的URL中没有子表编辑项。
    其实我已有一办法解决:
    public void Device_Update(Object sender, DataGridCommandEventArgs e) 
    {
    DataGrid dg=(DataGrid)sender;
    DataGrid dd=(DataGrid)dg.Parent.Parent.Parent.Parent;
    DataGridItem item=(DataGridItem)dg.Parent.Parent;TextBox editPrice=(TextBox)e.Item.FindControl("editPrice");
    TextBox editNum=(TextBox)e.Item.FindControl("editNum");dg.EditItemIndex = -1;Components.PriceModuleDB priceModuleDB = new Components.PriceModuleDB();priceModuleDB.UpdatePriceModulesById(Convert.ToDecimal((decimal)dg.DataKeys[e.Item.ItemIndex]),Convert.ToDecimal(editPrice.Text),Convert.ToDecimal(editNum.Text));dg.DataSource=priceModuleDB.GetDevicesByAT(asTypeList.SelectedValue,(string)dd.DataKeys[item.ItemIndex]);
    dg.DataBind();
    }
    这同我第一次绑定不一样,
    private void deviceTypeData_ItemDataBound(object sender, System.Web.UI.WebControls.DataGridItemEventArgs e)
    {
    if ((e.Item.ItemType == ListItemType.Item) || (e.Item.ItemType == ListItemType.AlternatingItem))
    {
    // 当使用用户控件时
    // Panel uc=(Panel)e.Item.FindControl("uc");
    // if(uc!=null)
    // {
    // Modules.deviceInPriceMoudle dm = (Modules.deviceInPriceMoudle) LoadControl("~/Modules/deviceInPriceMoudle.ascx");
    // dm.AsTypeCode=asTypeList.SelectedValue;
    // dm.TypeCode=(string)deviceTypeData.DataKeys[e.Item.ItemIndex];
    // uc.Controls.Add(dm);
    // }DataGrid dg = e.Item.FindControl("deviceDataGrid") as DataGrid;
    if (dg!=null)
    {
    dg.DataSource =((DataRowView)e.Item.DataItem).CreateChildView("deviceRelation");
    dg.DataBind();
    }}}
    我想在更新时也如同第一次一样绑定
      

  3.   

    参考--Editing Nested DataGrids in ASP.NET:
    http://www.developer.com/net/vb/article.php/2228761