asp.net中GridView编辑,更新,合计用法示例

前端技术 2023/09/06 .NET

本文实例讲述了asp.net中GridView编辑,更新,合计用法。分享给大家供大家参考,具体如下:

前台代码:

<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=\"项目编号\" ReadOnly=\"True\">
      <ItemStyle Width=\"5%\" HorizontalAlign=\"Center\" />
      <FooterStyle BorderWidth=\"0px\" />
    </asp:BoundField>
    <asp:TemplateField HeaderText=\"项目名称\">
      <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=\"合 计:\" Width=\"61px\"></asp:Label>
      </FooterTemplate>
      <FooterStyle BorderColor=\"Black\" BorderWidth=\"0px\" HorizontalAlign=\"Right\" />
    </asp:TemplateField>
    <asp:TemplateField HeaderText=\"概算金额\">
      <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=\"开工至上年底\\n累计完成概算\">
      <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=\"投资计划金额\">
      <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=\"备注\">
      <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=\"更新\"></asp:LinkButton>
        <asp:LinkButton ID=\"LkBtnCtrl\" runat=\"server\" CausesValidation=\"False\" CommandName=\"Cancel\"
          Text=\"取消\"></asp:LinkButton>
      </EditItemTemplate>
      <ItemTemplate>
        <asp:LinkButton ID=\"LinkButton2\" runat=\"server\" CausesValidation=\"False\" CommandName=\'<%#Eval(\"childFlag\").ToString()== \"0\" ? \"\":\"Edit\"%>\'
          Text=\'<%#Eval(\"childFlag\").ToString()== \"0\" ? \"锁定\":\"编辑\"%>\'></asp:LinkButton>
      </ItemTemplate>
      <ItemStyle Width=\"8%\" HorizontalAlign=\"Center\" />
    </asp:TemplateField>
  </Columns>
</asp:GridView>

注意:

1、通过设置 ReadOnly=\"True\" 表示此列不可以编辑;
2、通过Text=\'<%# Bind(\"tzhysMoney\", \"{0:N2}\") %>\'进行金额格式化;
3、重点的编辑\\显示\\合计

<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>

后台代码:

行绑定时的操作:

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\")
      {
      //设置连接地址\\参数
        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;
      }
      //计算合计
      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);
      }
      //编辑状态时,不然点击编辑时会出错,找不到控件
      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 //非编辑状态时
      {
        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);
        }
      }
    }
}
//取消编辑
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\");
}
//编辑
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\");
}
//更新
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\");
}

更多关于asp.net相关内容感兴趣的读者可查看本站专题:《asp.net操作json技巧总结》、《asp.net字符串操作技巧汇总》、《asp.net操作XML技巧总结》、《asp.net文件操作技巧汇总》、《asp.net ajax技巧总结专题》及《asp.net缓存操作技巧总结》。

希望本文所述对大家asp.net程序设计有所帮助。

本文地址:https://www.stayed.cn/item/14784

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。