2017-11-16 16 views
0

私は親グリッドGVInvoiceDetを持っています。このグリッドのCRUD操作は正常に動作しています。親の各行に、私は子グリッドGVTaxDetailsを持っています。これは画像のクリックで開きます。すなわち、展開/折りたたみ機能です。子グリッドビューでの編集は、展開を崩壊

子グリッド内のCRUDも探しています。しかし、子の中でeditをクリックすると、編集のためのtexboxは表示されず、親グリッドが崩壊します。私は仕事がためのコードを投稿...行ってしまった

<asp:GridView ID="GVInvoiceDet" runat="server" Width="100%" AutoGenerateColumns="False" 
     HorizontalAlign="Left" BorderStyle="Outset" OnRowCancelingEdit="GVInvoiceDet_RowCancelingEdit" 
     OnRowEditing="GVInvoiceDet_RowEditing" OnRowDataBound="GVInvoiceDet_RowDataBound" ShowFooter="True" 
     OnRowCommand="GVInvoiceDet_RowCommand" OnRowUpdating="GVInvoiceDet_RowUpdating" 
     OnRowDeleting="GVInvoiceDet_RowDeleting" OnRowDeleted="GVInvoiceDet_RowDeleted" 
     OnRowUpdated="GVInvoiceDet_RowUpdated" AllowSorting="True" DataSourceID="DSItemGrid" DataKeyNames="invoiceno,itemcd"> 
     <HeaderStyle BackColor="#0000ff" ForeColor="Yellow" /> 
     <FooterStyle BackColor="#FFFFCC" ForeColor="#330099" /> 
     <EditRowStyle BackColor="#FFFFCC" ForeColor="#330099" /> 
     <AlternatingRowStyle BackColor="#FE9CD5" /> 
     <Columns> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <a href="javascript:expandcollapse('div<%# Eval("itemcd") %>', 'one');"> 
         <img id="imgdiv<%# Eval("itemcd") %>" alt="Click to show/hide Tax Details <%# Eval("itemcd") %>" border="0" src="Images/plus.png" /> 
        </a> 
       </ItemTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField ItemStyle-Width="10%" HeaderText="Item Code" SortExpression="itemcd"> 
       <ItemTemplate> 
        <asp:Label ID="lblItemCode" runat="server" Text='<%# Eval("itemcd")%>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtItemCode" Width="90%" runat="server" Text='<%# Eval("itemcd")%>' Enabled="false"></asp:TextBox> 
       </EditItemTemplate> 
       <FooterTemplate> 
        <asp:TextBox ID="txtItemCode" Width="90%" runat="server" Text='' Enabled="false"></asp:TextBox> 
       </FooterTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField ItemStyle-Width="10%" HeaderText="HSN Code" SortExpression="hsncd"> 
       <ItemTemplate> 
        <asp:Label ID="lblItemHSNCode" runat="server" Text='<%# Eval("hsncd")%>'></asp:Label><asp:HiddenField ID="hdnItemGST" runat="server" Value='<%# Eval("itempercentage") %>' /> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtItemHSN" Width="90%" runat="server" Text='<%# Eval("hsncd")%>' Enabled="false"></asp:TextBox><asp:HiddenField ID="hdnEditItemGST" runat="server" Value='<%# Eval("itempercentage") %>' /> 
       </EditItemTemplate> 
       <FooterTemplate> 
        <asp:TextBox ID="txtItemHSN" Width="90%" runat="server" Text='' Enabled="false"></asp:TextBox><asp:HiddenField ID="hdnFooterItemGST" runat="server" Value='<%# Eval("itempercentage") %>' /> 
       </FooterTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField ItemStyle-Width="25%" HeaderText="Item Description" SortExpression="itemdesc"> 
       <ItemTemplate> 
        <asp:Label ID="lblItemDesc" runat="server" Text='<%# Eval("itemdesc")%>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:Label ID="lblItemDesc" runat="server" Text='<%# Eval("itemdesc")%>' Visible="false"></asp:Label><asp:HiddenField ID="hdnItemDesc" runat="server" Value='<%# String.Format("{0}-{1}-{2}",Eval("itemcd"),Eval("hsncd"),Eval("itempercentage")) %>' /> 
        <asp:DropDownList ID="eddlItemDesc" runat="server" AutoPostBack="true" OnSelectedIndexChanged="eddlItemDesc_SelectedIndexChanged"></asp:DropDownList> 
       </EditItemTemplate> 
       <FooterTemplate> 
        <asp:DropDownList ID="fddlItemDesc" runat="server" AutoPostBack="true" OnSelectedIndexChanged="fddlItemDesc_SelectedIndexChanged"></asp:DropDownList> 
       </FooterTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField ItemStyle-Width="5%" HeaderText="Quantity"> 
       <ItemTemplate> 
        <asp:Label ID="lblItemQty" runat="server" Text='<%# Eval("quantity")%>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtItemQty" Width="90%" runat="server" Text='<%# Eval("quantity")%>'></asp:TextBox> 
       </EditItemTemplate> 
       <FooterTemplate> 
        <asp:TextBox ID="txtItemQty" Width="90%" MaxLength="100" runat="server"></asp:TextBox> 
       </FooterTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField ItemStyle-Width="5%" HeaderText="Unit Rate"> 
       <ItemTemplate> 
        <asp:Label ID="lblItemUnitRate" runat="server" Text='<%# Eval("unitrate")%>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtItemUnitRate" Width="90%" runat="server" Text='<%# Eval("unitrate")%>'></asp:TextBox> 
       </EditItemTemplate> 
       <FooterTemplate> 
        <asp:TextBox ID="txtItemUnitRate" Width="90%" MaxLength="100" runat="server"></asp:TextBox> 
       </FooterTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField ItemStyle-Width="5%" HeaderText="Unit Value"> 
       <ItemTemplate> 
        <asp:Label ID="lblItemUnitValue" runat="server" Text='<%# Eval("unitvalue")%>'></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtItemUnitValue" Width="90%" runat="server" Text='<%# Eval("unitvalue")%>' Enabled="false"></asp:TextBox> 
       </EditItemTemplate> 
       <FooterTemplate> 
        <asp:TextBox ID="txtItemUnitValue" Width="90%" MaxLength="100" runat="server" Enabled="false"></asp:TextBox> 
       </FooterTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField ItemStyle-Width="5%" HeaderText="Final Value"> 
       <ItemTemplate> 
        <asp:Label ID="lblItemFinalValue" runat="server" Text=''></asp:Label> 
       </ItemTemplate> 
       <EditItemTemplate> 
        <asp:TextBox ID="txtItemFinalValue" Width="90%" runat="server" Text='' Enabled="false"></asp:TextBox> 
       </EditItemTemplate> 
       <FooterTemplate> 
        <asp:TextBox ID="txtItemFinalValue" Width="90%" MaxLength="100" runat="server" Enabled="false"></asp:TextBox> 
       </FooterTemplate> 
      </asp:TemplateField> 
      <asp:CommandField ShowEditButton="True" HeaderText="Edit" /> 
      <asp:TemplateField HeaderText="Delete" ItemStyle-Width="5%"> 
       <ItemTemplate> 
        <asp:LinkButton ID="linkDeleteInvoiceItem" CommandName="DeleteItem" runat="server">Delete</asp:LinkButton> 
       </ItemTemplate> 
       <FooterTemplate> 
        <asp:LinkButton ID="linkAddInvoiceItem" CommandName="AddItem" runat="server">Add</asp:LinkButton> 
       </FooterTemplate> 
      </asp:TemplateField> 
      <asp:TemplateField> 
       <ItemTemplate> 
        <tr> 
         <td colspan="100%"> 
          <div id="div<%# Eval("itemcd") %>" style="display: none; position: relative; left: 15px; overflow: auto; width: 97%"> 
           <asp:GridView ID="GVTaxDetails" BackColor="White" Width="100%" Font-Size="Small" AutoGenerateColumns="false" 
            runat="server" DataKeyNames="invoiceno,itemcd,valuecd" ShowFooter="True" OnRowUpdating="GVTaxDetails_RowUpdating" 
            OnRowCommand="GVTaxDetails_RowCommand" OnRowEditing="GVTaxDetails_RowEditing" GridLines="None" 
            OnRowUpdated="GVTaxDetails_RowUpdated" OnRowCancelingEdit="GVTaxDetails_CancelingEdit" 
            OnRowDataBound="GVTaxDetails_RowDataBound" OnRowDeleting="GVTaxDetails_RowDeleting" OnRowDeleted="GVTaxDetails_RowDeleted" 
            ShowHeaderWhenEmpty="true" BorderStyle="Double" BorderColor="#0083C1"> 
            <RowStyle BackColor="Gainsboro" /> 
            <AlternatingRowStyle BackColor="White" /> 
            <HeaderStyle BackColor="#0083C1" ForeColor="White" /> 
            <FooterStyle BackColor="White" /> 
            <Columns> 
             <asp:TemplateField ItemStyle-Width="5%" HeaderText="SL No"> 
              <ItemTemplate> 
               <asp:Label ID="lblViewTaxSlno" runat="server" Text='<%# Eval("slno")%>'></asp:Label> 
              </ItemTemplate> 
              <EditItemTemplate> 
               <asp:TextBox ID="txtViewTaxSlno" runat="server" Text='<%# Eval("slno")%>' Enabled="false"></asp:TextBox> 
              </EditItemTemplate> 
              <FooterTemplate> 
               <asp:TextBox ID="txtViewTaxSlno" MaxLength="3" Width="80%" runat="server" Text='<%# Convert.ToInt32(Container.DataItemIndex) + 1 %>' Enabled="false"></asp:TextBox> 
              </FooterTemplate> 
             </asp:TemplateField> 
             <asp:TemplateField ItemStyle-Width="15%" HeaderText="Value"> 
              <ItemTemplate> 
               <asp:HiddenField ID="hdnViewTaxDesc" runat="server" Value='<%# Eval("valuecd") %>' /> 
               <asp:Label ID="lblViewTaxDesc" runat="server" Text='<%# Eval("valuedesc")%>'></asp:Label> 
              </ItemTemplate> 
              <EditItemTemplate> 
               <asp:HiddenField ID="hdnViewTaxDesc" runat="server" Value='<%# Eval("valuecd") %>' /> 
               <asp:DropDownList ID="eddlViewTaxDesc" Width="90%" runat="server" AutoPostBack="true" OnSelectedIndexChanged="eddViewTaxDesc_SelectedIndexChanged"></asp:DropDownList> 
              </EditItemTemplate> 
              <FooterTemplate> 
               <asp:HiddenField ID="hdnViewTaxDesc" runat="server" Value='<%# Eval("valuecd") %>' /> 
               <asp:DropDownList ID="fddViewTaxDesc" Width="90%" runat="server" OnSelectedIndexChanged="fddlViewTaxDesc_SelectedIndexChanged"></asp:DropDownList> 
              </FooterTemplate> 
             </asp:TemplateField> 
             <asp:TemplateField ItemStyle-Width="3%" HeaderText="Amount"> 
              <ItemTemplate> 
               <asp:Label ID="lblViewTaxAmount" runat="server" Text='<%# Eval("value")%>'></asp:Label> 
              </ItemTemplate> 
              <EditItemTemplate> 
               <asp:TextBox ID="txtViewTaxAmount" runat="server" Text='<%# Eval("value")%>'></asp:TextBox> 
              </EditItemTemplate> 
              <FooterTemplate> 
               <asp:TextBox ID="txtViewTaxAmount" runat="server" Text='<%# Eval("value")%>'></asp:TextBox> 
              </FooterTemplate> 
             </asp:TemplateField> 
             <asp:TemplateField ItemStyle-Width="7%" HeaderText="Ref. Sl No"> 
              <ItemTemplate> 
               <asp:Label ID="lblViewTaxRefNo" runat="server" Text='<%# Eval("refslno")%>'></asp:Label> 
              </ItemTemplate> 
              <EditItemTemplate> 
               <asp:HiddenField ID="hdnViewTaxRefNo" runat="server" Value='<%# Eval("refslno") %>' /> 
               <asp:DropDownList ID="eddlViewTaxRefNo" Width="90%" runat="server" AutoPostBack="false"></asp:DropDownList> 
              </EditItemTemplate> 
              <FooterTemplate> 
               <asp:DropDownList ID="fddViewTaxRefNo" Width="90%" runat="server" AutoPostBack="false"></asp:DropDownList> 
              </FooterTemplate> 
             </asp:TemplateField> 
             <asp:TemplateField ItemStyle-Width="10%" HeaderText="Tax-Mode"> 
              <ItemTemplate> 
               <asp:Label ID="lblViewTaxMode" runat="server" Text='<%# Eval("absper").ToString()=="A"?"Absolute":"Percentage"%>'></asp:Label> 
              </ItemTemplate> 
              <EditItemTemplate> 
               <asp:HiddenField ID="hdnViewTaxMode" runat="server" Value='<%# Eval("absper") %>' /> 
               <asp:DropDownList ID="eddlViewTaxMode" Width="90%" runat="server" AutoPostBack="false"> 
                <asp:ListItem Value="-1" Text="-Select Mode-" Selected="True"></asp:ListItem> 
                <asp:ListItem Value="A" Text="Absolute"></asp:ListItem> 
                <asp:ListItem Value="P" Text="Percentage"></asp:ListItem> 
               </asp:DropDownList> 
              </EditItemTemplate> 
              <FooterTemplate> 
               <asp:DropDownList ID="fddlViewTaxMode" Width="95%" runat="server" AutoPostBack="false"> 
                <asp:ListItem Value="-1" Text="-Select Mode-" Selected="True"></asp:ListItem> 
                <asp:ListItem Value="A" Text="Absolute"></asp:ListItem> 
                <asp:ListItem Value="P" Text="Percentage"></asp:ListItem> 
               </asp:DropDownList> 
              </FooterTemplate> 
             </asp:TemplateField> 
             <asp:TemplateField ItemStyle-Width="10%" HeaderText="Operation"> 
              <ItemTemplate> 
               <asp:Label ID="lblViewTaxOperation" runat="server" Text='<%# Eval("addsub").ToString()=="A"?"Add":"Subtract"%>'></asp:Label> 
              </ItemTemplate> 
              <EditItemTemplate> 
               <asp:HiddenField ID="hdnViewTaxOperation" runat="server" Value='<%# Eval("addsub") %>' /> 
               <asp:DropDownList ID="eddlViewTaxOperation" Width="90%" runat="server" AutoPostBack="false"> 
                <asp:ListItem Value="-1" Text="-Select Operation-" Selected="True"></asp:ListItem> 
                <asp:ListItem Value="A" Text="Add"></asp:ListItem> 
                <asp:ListItem Value="S" Text="Subtract"></asp:ListItem> 
               </asp:DropDownList> 
              </EditItemTemplate> 
              <FooterTemplate> 
               <asp:DropDownList ID="fddlViewTaxOperation" Width="90%" runat="server" AutoPostBack="false"> 
                <asp:ListItem Value="-1" Text="-Select Operation-" Selected="True"></asp:ListItem> 
                <asp:ListItem Value="A" Text="Add"></asp:ListItem> 
                <asp:ListItem Value="S" Text="Subtract"></asp:ListItem> 
               </asp:DropDownList> 
              </FooterTemplate> 
             </asp:TemplateField> 
             <asp:TemplateField ItemStyle-Width="3%" HeaderText="Final Amount"> 
              <ItemTemplate> 
               <asp:Label ID="lblViewTaxFinalAmount" runat="server" Text='<%# Eval("finalvalue")%>'></asp:Label> 
              </ItemTemplate> 
              <EditItemTemplate> 
               <asp:TextBox ID="txtViewTaxFinalAmount" runat="server" Text='<%# Eval("finalvalue")%>' Enabled="false"></asp:TextBox> 
              </EditItemTemplate> 
              <FooterTemplate> 
               <asp:TextBox ID="txtViewTaxFinalAmount" runat="server" Text='<%# Eval("finalvalue")%>' Enabled="false"></asp:TextBox> 
              </FooterTemplate> 
             </asp:TemplateField> 
             <asp:CommandField HeaderText="Edit" ShowEditButton="True" /> 
             <asp:TemplateField HeaderText="Delete"> 
              <ItemTemplate> 
               <asp:LinkButton ID="linkDeleteTaxDetails" CommandName="Delete" runat="server">Delete</asp:LinkButton> 
              </ItemTemplate> 
              <FooterTemplate> 
               <asp:LinkButton ID="linkAddTaxDetails" CommandName="AddTax" runat="server">Add</asp:LinkButton> 
              </FooterTemplate> 
             </asp:TemplateField> 
            </Columns> 
           </asp:GridView> 
          </div> 
         </td> 
        </tr> 
       </ItemTemplate> 
      </asp:TemplateField> 
     </Columns> 
    </asp:GridView> 
    <asp:SqlDataSource ID="DSItemGrid" runat="server" ConnectionString="<%$ ConnectionStrings:GSTCS %>" ProviderName="<%$ ConnectionStrings:GSTCS.ProviderName %>" 
     SelectCommand="select invoiceno, dt.itemcd itemcd, mast.itemdesc itemdesc, mast.hsncd hsncd, dt.quantity quantity, 
     mast.unitrate unitrate, dt.unitvalue unitvalue, mast.itempercentage itempercentage 
     from GSTINVOICEDT dt join GSTITEMMASTER mast on (dt.itemcd = mast.itemcd and dt.unitcode = mast.unitcode and dt.projectcode = mast.projectcode) 
     where dt.unitcode = :unitCode and dt.projectCode = :projCode and dt.invoiceno = :invoiceNo order by invoiceno, itemcd"> 
     <SelectParameters> 
      <asp:SessionParameter DefaultValue="05" Name="unitCode" SessionField="unit" /> 
      <asp:SessionParameter DefaultValue="0501" Name="projCode" SessionField="project" /> 
      <asp:SessionParameter DefaultValue="INVOICENO" Name="invoiceNo" SessionField="invoiceNo" Type="String" /> 
     </SelectParameters> 
    </asp:SqlDataSource> 

答えて

0

:ここ

はコード

protected void GVTaxDetails_RowEditing(object sender, GridViewEditEventArgs e) 
     { 
      GridView gvTemp = (GridView)sender; 
      gvUniqueID = gvTemp.UniqueID; 
      //gvEditIndex = e.NewEditIndex; 
      gvTemp.EditIndex = e.NewEditIndex; 
      GVInvoiceDet.DataBind();   
     } 

親行編集コード

protected void GVInvoiceDet_RowEditing(object sender, GridViewEditEventArgs e) 
     { 
      GVInvoiceDet.EditIndex = e.NewEditIndex; 
      GVInvoiceDet.DataBind(); 
      BindItemGrid();   
     } 

ASPXファイルをrowediting子グリッドです他の人が同様の状況に遭遇した場合。

親のrowdataboundにdivを開いたままにしてeditIndexを更新するコードが追加されました。

protected void GVInvoiceDet_RowDataBound(object sender, GridViewRowEventArgs e) { 
      GridViewRow row = e.Row; 
      if(row.RowType == DataControlRowType.Header) 
      { 
       return; 
      } 
      else if (row.RowType == DataControlRowType.DataRow) 
      { 
        //Find Child GridView control 
        GridView gvTax = new GridView(); 
        gvTax = (GridView)row.FindControl("GVTaxDetails"); 
        if (gvTax.UniqueID == gvUniqueID) 
        { 
         gvTax.EditIndex = gvEditIndex; 
         //Expand the Child grid 
         ClientScript.RegisterStartupScript(GetType(), "Expand", "<SCRIPT LANGUAGE='javascript'>expandcollapse('div" + ((DataRowView)e.Row.DataItem)["itemcd"].ToString() + "','one');</script>"); 
        } 
      } 
    } 

expandcollapseはASPX側の関数である:

function expandcollapse(obj, row) { 
      var div = document.getElementById(obj); 
      var img = document.getElementById('img' + obj); 

      if (div.style.display == "none") { 
       div.style.display = "block"; 
       if (row == 'alt') { 
        img.src = "Images/minus.png"; 
       } 
       else { 
        img.src = "Images/minus.png"; 
       } 
       img.alt = "Close View Taxes"; 
      } 
      else { 
       div.style.display = "none"; 
       if (row == 'alt') { 
        img.src = "Images/plus.png"; 
       } 
       else { 
        img.src = "Images/plus.png"; 
       } 
       img.alt = "Expand View Taxes"; 
      } 
     } 
関連する問題