asp. GridView Edit Update Aggregate Usage Example in asp. net

  • 2021-08-03 10:04:02
  • OfStack

This article illustrates the use of GridView editing, updating, and aggregating in asp. net. Share it for your reference, as follows:

Foreground code:


<asp:GridView ID="tabgv" runat="server" DataKeyNames="ysId" ShowFooter="True" OnRowDataBound="GridView1_RowDataBound"
  OnRowCreated="GridView1_RowCreated" AutoGenerateColumns="False" Width="99%" CssClass="gridview"
  EnableModelValidation="True" OnRowCancelingEdit="tabgv_RowCancelingEdit" OnRowEditing="tabgv_RowEditing"
  OnRowUpdating="tabgv_RowUpdating">
  <RowStyle BorderColor="Black" BorderStyle="None" />
  <Columns>
    <asp:BoundField DataField="gsHkrno" HeaderText=" Item number " ReadOnly="True">
      <ItemStyle Width="5%" HorizontalAlign="Center" />
      <FooterStyle BorderWidth="0px" />
    </asp:BoundField>
    <asp:TemplateField HeaderText=" Project name ">
      <ItemTemplate>
        <asp:HyperLink ID="Hyp_gsName" runat="server" ForeColor="Blue" Text='<%# Bind("gsName") %>'></asp:HyperLink>
      </ItemTemplate>
      <ItemStyle Width="25%" HorizontalAlign="left" />
      <FooterTemplate>
        <asp:Label ID="Label4" runat="server" Font-Bold="True" Text=" Combined   Plan: " Width="61px"></asp:Label>
      </FooterTemplate>
      <FooterStyle BorderColor="Black" BorderWidth="0px" HorizontalAlign="Right" />
    </asp:TemplateField>
    <asp:TemplateField HeaderText=" Estimated amount ">
      <ItemTemplate>
        <asp:Label ID="labgsMoney" runat="server" Text='<%#Bind("gsMoney", "{0:N2}") %>'></asp:Label>
      </ItemTemplate>
      <ItemStyle Width="8%" HorizontalAlign="right" />
      <FooterTemplate>
        <asp:Label ID="labtotalgsMoney" runat="server" ForeColor="Red"></asp:Label>
      </FooterTemplate>
      <FooterStyle BorderColor="Black" HorizontalAlign="Right" />
    </asp:TemplateField>
    <asp:TemplateField HeaderText=" Start construction until the end of last year \n Accumulated budget estimate ">
      <ItemTemplate>
        <asp:Label ID="labkgzsndwcGsMoney" runat="server" Text='<%# Bind("footMoney", "{0:N2}") %>'></asp:Label>
        <asp:HiddenField ID="hdnysYear" runat="server" Value='<%# Eval("ysYear") %> ' />
        <asp:HiddenField ID="hdngsId" runat="server" Value='<%# Eval("gsId") %> ' />
        <asp:HiddenField ID="hdngsHkrno" runat="server" Value='<%# Eval("gsHkrno") %> ' />
        <asp:HiddenField ID="hdnChildFlag" runat="server" Value='<%# Eval("childFlag") %> ' />
      </ItemTemplate>
      <ItemStyle Width="8%" HorizontalAlign="right" />
      <FooterTemplate>
        <asp:Label ID="labtotalfootMoney" runat="server" ForeColor="Red"></asp:Label>
      </FooterTemplate>
      <FooterStyle BorderColor="Black" HorizontalAlign="Right" />
    </asp:TemplateField>
    <asp:TemplateField HeaderText=" Amount of investment plan ">
      <ItemTemplate>
        <asp:Label ID="labtzqysMoney" runat="server" Text='<%# Bind("tzqysMoney", "{0:N2}") %>'></asp:Label>
      </ItemTemplate>
      <EditItemTemplate>
        <asp:TextBox ID="txttzqysMoney" runat="server" Text='<%# Eval("tzqysMoney") %> '
          Style="text-align: right" Width="100px"
          onKeyPress="if (event.keyCode!=46 && event.keyCode!=45 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false"></asp:TextBox>
      </EditItemTemplate>
      <ItemStyle Width="8%" HorizontalAlign="right" />
      <FooterTemplate>
        <asp:Label ID="labtotaltzqysMoney" runat="server" ForeColor="Red"></asp:Label>
      </FooterTemplate>
      <FooterStyle BorderColor="Black" HorizontalAlign="Right" />
    </asp:TemplateField>
    <asp:TemplateField>
      <ItemTemplate>
        <asp:Label ID="labtzhysMoney" runat="server" Text='<%# Bind("tzhysMoney", "{0:N2}") %>'></asp:Label>
      </ItemTemplate>
      <EditItemTemplate>
        <asp:TextBox ID="txttzhysMoney" runat="server" Text='<%# Eval("tzhysMoney") %> '
          Style="text-align: right" Width="100px"
           onKeyPress="if (event.keyCode!=46 && event.keyCode!=45 && (event.keyCode<48 || event.keyCode>57)) event.returnValue=false"></asp:TextBox>
      </EditItemTemplate>
      <ItemStyle Width="8%" HorizontalAlign="right" />
      <FooterTemplate>
        <asp:Label ID="labtotaltzhysMoney" runat="server" ForeColor="Red"></asp:Label>
      </FooterTemplate>
      <FooterStyle BorderColor="Black" HorizontalAlign="Right" />
    </asp:TemplateField>
    <asp:TemplateField HeaderText=" Remarks ">
      <ItemTemplate>
        <asp:Label ID="labtremark" runat="server" Text='<%# Eval("remark") %> '></asp:Label>
      </ItemTemplate>
      <EditItemTemplate>
        <asp:TextBox ID="txtremark" runat="server" Text='<%# Eval("remark") %> ' Width="100px"></asp:TextBox>
      </EditItemTemplate>
      <ItemStyle Width="10%" HorizontalAlign="Center" />
    </asp:TemplateField>
    <asp:TemplateField ShowHeader="False">
      <EditItemTemplate>
        <asp:LinkButton ID="LkBtnUpdate" runat="server" CausesValidation="True" CommandName="Update"
          Text=" Update "></asp:LinkButton>
        <asp:LinkButton ID="LkBtnCtrl" runat="server" CausesValidation="False" CommandName="Cancel"
          Text=" Cancel "></asp:LinkButton>
      </EditItemTemplate>
      <ItemTemplate>
        <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="False" CommandName='<%#Eval("childFlag").ToString()== "0" ? "":"Edit"%>'
          Text='<%#Eval("childFlag").ToString()== "0" ? " Lock ":" Edit "%>'></asp:LinkButton>
      </ItemTemplate>
      <ItemStyle Width="8%" HorizontalAlign="Center" />
    </asp:TemplateField>
  </Columns>
</asp:GridView>

Note:

1. Set ReadOnly= "True" to indicate that this column cannot be edited;
2, via Text = ' < %# Bind("tzhysMoney", "{0:N2}") % > 'Formatting the amount;
3. Edit\ Display\ Total of Key Points


<asp:TemplateField>
  <ItemTemplate>
    <asp:Label ID="labtzhysMoney" runat="server" Text='<%# Bind("tzhysMoney", "{0:N2}") %>'></asp:Label>
  </ItemTemplate>
  <EditItemTemplate>
    <asp:TextBox ID="txttzhysMoney" runat="server" Text='<%# Eval("tzhysMoney") %> '
      Style="text-align: right" Width="100px"
       ></asp:TextBox>
  </EditItemTemplate>
  <ItemStyle Width="8%" HorizontalAlign="right" />
  <FooterTemplate>
    <asp:Label ID="labtotaltzhysMoney" runat="server" ForeColor="Red"></asp:Label>
  </FooterTemplate>
  <FooterStyle BorderColor="Black" HorizontalAlign="Right" />
</asp:TemplateField>

Background code:

Actions when row binding:


protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
{
    GridViewRow gr = e.Row;
    if (gr.RowType == DataControlRowType.DataRow)
    {
      HiddenField hdnysYear = (HiddenField)e.Row.FindControl("hdnysYear");
      HiddenField hdngsHkrno = (HiddenField)e.Row.FindControl("hdngsHkrno");
      HiddenField hdnChildFlag = (HiddenField)e.Row.FindControl("hdnChildFlag");
      HyperLink hy = (HyperLink)e.Row.FindControl("Hyp_gsName");
      if (hdnChildFlag.Value!="1")
      {
      // Set the connection address \ Parameter 
        hy.NavigateUrl = "ys_edit_right.aspx?gsHkrno=" + hdngsHkrno.Value + "&sysObjNo=" + sysObjNo + "&ysYear=" + hdnysYear.Value;
        hy.Font.Underline = true;
        hy.ForeColor = System.Drawing.Color.Blue;
        hy.Target = "mainFrame";
      }
      else
      {
        hy.ForeColor = System.Drawing.Color.Black;
      }
      // Calculate the total 
      Label labgsMoney = (Label)(e.Row.FindControl("labgsMoney"));
      if (labgsMoney != null || labgsMoney.Text != "")
      {
        gsMoneytotal += Convert.ToDecimal(labgsMoney.Text);
      }
      Label labkgzsndwcGsMoney = (Label)(e.Row.FindControl("labkgzsndwcGsMoney"));
      if (labkgzsndwcGsMoney != null || labkgzsndwcGsMoney.Text != "")
      {
        footMoneytotal += Convert.ToDecimal(labkgzsndwcGsMoney.Text);
      }
      // When editing status , Otherwise, there will be an error when clicking Edit , Control not found 
      if ((e.Row.RowState & DataControlRowState.Edit) == DataControlRowState.Edit)
      {
        TextBox txttzqysMoney = (TextBox)(e.Row.FindControl("txttzqysMoney"));
        if (txttzqysMoney != null || txttzqysMoney.Text != "")
        {
          tzqysMoneytotal += Convert.ToDecimal(txttzqysMoney.Text);
        }
        TextBox txttzhysMoney = (TextBox)(e.Row.FindControl("txttzhysMoney"));
        if (txttzhysMoney != null || txttzhysMoney.Text != "")
        {
          tzhysMoneytotal += Convert.ToDecimal(txttzhysMoney.Text);
        }
      }
      else // In the non-edit state 
      {
        Label labtzqysMoney = (Label)(e.Row.FindControl("labtzqysMoney"));
        if (labtzqysMoney != null || labtzqysMoney.Text != "")
        {
          tzqysMoneytotal += Convert.ToDecimal(labtzqysMoney.Text);
        }
        Label labtzhysMoney = (Label)(e.Row.FindControl("labtzhysMoney"));
        if (labtzhysMoney != null || labtzhysMoney.Text != "")
        {
          tzhysMoneytotal += Convert.ToDecimal(labtzhysMoney.Text);
        }
      }
    }
}
// Cancel editing 
protected void tabgv_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
{
    tabgv.EditIndex = -1;
    string strysYear = (Convert.ToInt32(ysYear) - 1).ToString();
    GvDataBind(gsHkrno, "0002", ysYear, "1900-01-01 00:00:00", strysYear + "-12-25 00:00:00");
}
// Edit 
protected void tabgv_RowEditing(object sender, GridViewEditEventArgs e)
{
      tabgv.EditIndex = e.NewEditIndex;
      string strysYear = (Convert.ToInt32(ysYear) - 1).ToString();
      GvDataBind(gsHkrno, "0002", ysYear, "1900-01-01 00:00:00", strysYear + "-12-25 00:00:00");
}
// Update 
protected void tabgv_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
    string sqlstr = "update ys_ysitem_list set tzqysMoney=@tzqysMoney,tzhysMoney=@tzhysMoney,remark=@remark where ysId=@ysId";
    SqlParameter[] para ={new SqlParameter("@tzqysMoney",SqlDbType.VarChar),
    new SqlParameter("@tzhysMoney",SqlDbType.VarChar),
    new SqlParameter("@remark",SqlDbType.VarChar),
    new SqlParameter("@ysId",SqlDbType.VarChar)
    };
    para[0].Value = ((TextBox)(tabgv.Rows[e.RowIndex].FindControl("txttzqysMoney"))).Text.ToString().Trim();
    para[1].Value = ((TextBox)(tabgv.Rows[e.RowIndex].FindControl("txttzhysMoney"))).Text.ToString().Trim();
    para[2].Value = ((TextBox)(tabgv.Rows[e.RowIndex].FindControl("txtremark"))).Text.ToString().Trim();
    para[3].Value = tabgv.DataKeys[e.RowIndex].Value.ToString();
    pms.SqlHelper.ExecuteNonQuery(CommandType.Text, sqlstr, para);
    tabgv.EditIndex = -1;
    string strysYear = (Convert.ToInt32(ysYear) - 1).ToString();
    GvDataBind(gsHkrno, "0002", ysYear, "1900-01-01 00:00:00", strysYear + "-12-25 00:00:00");
}

For more readers interested in asp. net, please check the topics on this site: "Summary of asp. net Operation json Skills", "Summary of asp. net String Operation Skills", "Summary of asp. net Operation Skills", "Summary of asp. net File Operation Skills", "Summary of asp. ES40ajax Skills" and "Summary of asp. net Cache Operation Skills".

I hope this paper is helpful to everyone's asp. net programming.


Related articles: