更新gridview行会添加新记录,而不是更新行

穆恩·谢赫(Moin Shaikh)

我正在尝试以某种形式在gridview外部更新gridview记录。单击“编辑”按钮时,我编写了一个事件,当事件触发时,它将行数据发送到表单供用户编辑。当我单击“提交/更新”按钮时,Gridview将其添加为新记录,而不是更新原始记录。知道我想念的是什么吗?

这是带有gridview的设计代码

<%@ Page Title="Add User" Language="C#" AutoEventWireup="true" CodeFile="adduser.aspx.cs" Inherits="_Default" %>

<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="ajax" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
    <title></title>
    <link href="style.css" type="text/css" rel="Stylesheet" />
    <script type="text/javascript">
        function confirmDelete() {
            return confirm("Do you want to delete this record?");
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <ajax:ToolkitScriptManager ID="toolkit1" runat="server">
    </ajax:ToolkitScriptManager>
    <asp:UpdatePanel ID="UpdatePanel1" runat="server">
        <ContentTemplate>
            <table border="0" align="center" cellpadding="2" cellspacing="2" class="maindiv">
                <tr><!--Hidden field for EmployeeID reference-->
                    <td colspan="2"><asp:HiddenField ID="txtHiddenEmpID" Value="0" runat="server" /></td>
                </tr>
                <tr>
                    <td>
                        <span class="asterisk">*</span><asp:Label ID="name" runat="server" Text="Name"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="txtEmpName" runat="server" CssClass="box"></asp:TextBox>
                        <asp:RequiredFieldValidator Display="None" ID="RequiredFieldValidator1" ErrorMessage="Name is required!"
                            EnableClientScript="true" SetFocusOnError="true" runat="server" ControlToValidate="txtEmpName"
                            CssClass="error_msg"></asp:RequiredFieldValidator>
                        <asp:RegularExpressionValidator ID="NameValidator" runat="server" ErrorMessage="Name can not contain numeric or special characters."
                            ControlToValidate="txtEmpName" ValidationExpression="^[A-Za-z ]*$" CssClass="error_msg"></asp:RegularExpressionValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        <span class="asterisk">*</span><asp:Label ID="Label1" runat="server" Text="Address"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="addressBox" runat="server" CssClass="box"></asp:TextBox>
                        <asp:RequiredFieldValidator Display="None" ID="AddressValidator" ErrorMessage="Address is required!"
                            EnableClientScript="true" SetFocusOnError="true" runat="server" ControlToValidate="addressBox"
                            CssClass="error_msg"></asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        <span class="asterisk">*</span><asp:Label ID="Label2" runat="server" Text="DOB"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="dobBox" runat="server" CssClass="dob_cal box" ReadOnly="false" ></asp:TextBox>
                        <ajax:CalendarExtender ID="CalenderExtender1" TargetControlID="dobBox" Format="dd/MM/yyyy"
                            runat="server">
                        </ajax:CalendarExtender>
                        <asp:RequiredFieldValidator Display="None" ID="dobValidator" ErrorMessage="DOB is required!"
                            EnableClientScript="true" SetFocusOnError="true" runat="server" ControlToValidate="dobBox"
                            CssClass="error_msg"></asp:RequiredFieldValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        <span class="asterisk">*</span><asp:Label ID="Label3" runat="server" Text="Salary"></asp:Label>
                    </td>
                    <td>
                        <asp:TextBox ID="salaryBox" runat="server" CssClass="box" MaxLength="8" ></asp:TextBox>
                        <asp:RequiredFieldValidator ID="salaryValidate" runat="server" ControlToValidate="salaryBox"
                            ErrorMessage="Salary is required!" Display="None" CssClass="error_msg" SetFocusOnError="true"
                            EnableClientScript="true"></asp:RequiredFieldValidator>
                        <asp:RegularExpressionValidator ID="SalaryValidator" runat="server" ErrorMessage="Salary can contain only numeric values."
                            Display="None" ControlToValidate="salaryBox" ValidationExpression="^[0-9]*$"
                            CssClass="error_msg"></asp:RegularExpressionValidator>
                    </td>
                </tr>
                <tr>
                    <td>
                        <span class="asterisk">*</span><asp:Label ID="gender" runat="server" Text="Gender"></asp:Label>
                    </td>
                    <td>
                        <span>
                            <asp:RadioButton GroupName="gendergrp" ID="gendermale" runat="server" Text="Male"
                                Checked="true" /></span><span style="padding-left: 5px;">
                            <asp:RadioButton GroupName="gendergrp" ID="genderfemale" runat="server" Text="Female"
                                        Checked="false" /></span>
                    </td>
                </tr>
                <tr>
                    <td>
                        <div style="float: right; margin-right: -70px;">
                            <asp:Button ID="Button1" runat="server" CssClass="btn" Text="Save" OnClick="Button1_Click" /></div>
                    </td>
                    <td>
                        <div style="float: left; margin-left: 70px;">
                            <asp:Button ID="CancelBtn" CausesValidation="false" runat="server" CssClass="btn"
                                Text="Cancel" OnClick="CancelBtn_Click" />

                        </div>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:Label ID="lblError" runat="server" CssClass="error_msg"></asp:Label>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <asp:ValidationSummary ID="valSum" DisplayMode="BulletList" EnableClientScript="true"
                            HeaderText="Error!" runat="server" CssClass="error_msg" />
                    </td>
                </tr>
            </table>
            <!--div for data display-->
            <div class="data_display">
                <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4"
                    DataKeyNames="EmployeeID" EmptyDataText="There are no data records to display."
                    GridLines="Horizontal" BackColor="#CCCCCC" BorderColor="White" Font-Bold="False"
                    Font-Names="Arial" Font-Size="Medium" ForeColor="#666666" 
                    AllowPaging="True" PageSize="5" PagerSettings-Mode="Numeric" 
                    PagerSettings-Position="Bottom" 
                    onpageindexchanging="GridView1_PageIndexChanging"
                    >
                    <Columns>
<%--                    <asp:TemplateField>
                        <ItemTemplate>
                        <asp:HiddenField ID="EmpID" runat="server" Value='<%# Eval("EmployeeID") %>' />
                        </ItemTemplate>
                    </asp:TemplateField>

--%>                        <asp:BoundField DataField="EmployeeID" HeaderText="Employee ID"  
                            SortExpression="EmployeeID" Visible="true" ItemStyle-HorizontalAlign="Center">
                        <ItemStyle HorizontalAlign="Center" />
                        </asp:BoundField>
                        <asp:BoundField DataField="EmployeeName" HeaderText="Name" SortExpression="EmployeeName"
                            ItemStyle-Width="130px" ItemStyle-HorizontalAlign="Center">
                            <ItemStyle HorizontalAlign="Center" Width="130px" />
                        </asp:BoundField>
                            <asp:BoundField DataField="DateOfBirth" HeaderText="DoB" SortExpression="DateOfBirth"
                            DataFormatString="{0:dd-MM-yyyy}" ItemStyle-Width="100px" ItemStyle-HorizontalAlign="Center">
                            <ItemStyle HorizontalAlign="Center" Width="100px" />
                        </asp:BoundField>
                        <asp:BoundField DataField="Salary" HeaderText="Salary" 
                            SortExpression="Salary">
                            <ItemStyle HorizontalAlign="Center" Width="90px" />
                        </asp:BoundField>
                        <asp:BoundField DataField="Gender" HeaderText="Gender" ItemStyle-Width="90px"
                            ItemStyle-HorizontalAlign="Center">
                            <ItemStyle HorizontalAlign="Center" Width="70px" />
                        </asp:BoundField>
                        <asp:TemplateField>
                            <ItemTemplate>
                                <asp:Button ID="EditBtn" runat="server" Text="Select" CausesValidation="false" OnClick="EditBtn_Click" />
                                <asp:Button  ID="DelBtn" runat="server" Text="Delete" CausesValidation="false" OnClick="DelBtn_Click" OnClientClick="confirmDelete()" />
                            </ItemTemplate>
                        </asp:TemplateField>
                    </Columns>
                    <EditRowStyle BackColor="#ffffff" />
                    <FooterStyle BackColor="#1C5E55" Font-Bold="True" ForeColor="White" />
                    <HeaderStyle BackColor="Gray" Font-Bold="false" ForeColor="White" />
                    <PagerStyle BackColor="Gray" ForeColor="White" HorizontalAlign="Center" />
                    <RowStyle BackColor="#E3EAEB" />
                    <SelectedRowStyle BackColor="#C5BBAF" Font-Bold="True" ForeColor="#333333" />
                    <SortedAscendingCellStyle BackColor="#F8FAFA" />
                    <SortedAscendingHeaderStyle BackColor="#246B61" />
                    <SortedDescendingCellStyle BackColor="#D4DFE1" />
                    <SortedDescendingHeaderStyle BackColor="#15524A" />
                </asp:GridView>
                <br />
                <span style="font-family: Arial; font-size: small; color: Green; font-weight: bold;">
                    You are viewing page <%=GridView1.PageIndex + 1%> of <%=GridView1.PageCount%>
                </span>
            </div>
            <div>
                <asp:Label ID="lblMessage" runat="server"></asp:Label></div>
        </ContentTemplate>
    </asp:UpdatePanel>
    </form>
</body>
</html>

这是背后的代码

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Globalization;


public partial class _Default : System.Web.UI.Page
{
    private SqlConnection con;
    private SqlCommand cmd;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            GetData();
        }
    }
    protected void CancelBtn_Click(object sender, EventArgs e)
    {
        if (IsPostBack)
        {
            ClearForm();
        }
    }


    protected void CalenderExtender1_DatePick(object sender, EventArgs e)
    {
        dobBox.Text = CalenderExtender1.SelectedDate.ToString();
        CalenderExtender1.Visible = false;
    }

    protected void DatePick(object sender, EventArgs e)
    {
        CalenderExtender1.Visible = true;
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {

                string EmpName = txtEmpName.Text;
                string address = addressBox.Text;
                DateTime dob = Convert.ToDateTime(dobBox.Text);
                decimal salary = Convert.ToDecimal(salaryBox.Text);
                bool gender = (gendermale.Checked == true ? true : false);

                string constr = ConfigurationManager.ConnectionStrings["EmpConstr"].ConnectionString;

                con = new SqlConnection();
                con.ConnectionString = constr;

                con.Open();
                int count=0;
                if (txtHiddenEmpID.Value != "") //insert
                {
                    string query = "Insert into Employee (EmployeeName,Address,DateOfBirth,Salary,Gender) Values(@enm,@address,@dob,@salary,@gender)";

                    cmd = new SqlCommand(query, con);

                    cmd.Parameters.AddWithValue("@enm", EmpName);
                    cmd.Parameters.AddWithValue("@address", address);
                    cmd.Parameters.AddWithValue("@dob", dob);
                    cmd.Parameters.AddWithValue("@salary", salary);
                    cmd.Parameters.AddWithValue("@gender", gender);


                    count = cmd.ExecuteNonQuery();
                }
                else
                {
                    // update

                }


                if (count == 1)
                {
                    ClearForm();
                }

                con.Close();
                GetData();

        }
        catch (Exception ex)
        {
            lblError.Text = ex.Message;
        }
    }
    #region Public Functions
    public void ClearForm()
    {

        txtEmpName.Text = string.Empty;
        addressBox.Text = string.Empty;
        dobBox.Text = string.Empty;
        salaryBox.Text = string.Empty;
        lblError.Text = string.Empty;
        if (genderfemale.Checked)
        {
            genderfemale.Checked = false;
            gendermale.Checked = true;
        }
        else 
        {
            gendermale.Checked = true;
        }
    }

    private void GetData()
    {
        DataTable dt = new DataTable();
        string constr = ConfigurationManager.ConnectionStrings["EmpConstr"].ConnectionString;

        con = new SqlConnection();
        con.ConnectionString = constr;

        con.Open();

        string query = "SELECT * from Employee Order by EmployeeID DESC";
        SqlDataAdapter sqladpt = new SqlDataAdapter(query, con);
        sqladpt.Fill(dt);

        GridView1.DataSource = dt;
        GridView1.DataBind();
        con.Close();


    }
    #endregion

    #region GridView Functions
    protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
    {
        if (e.Row.RowType == DataControlRowType.DataRow)
        {
            if (e.Row.Cells[4].Text == "True")
            {
                e.Row.Cells[4].Text = "Male";
            }
            else
            {
                e.Row.Cells[4].Text = "Female";

            }
        }
    }
    #endregion

    //select data to display when gridview select button is clicked
    //source: www.aspdotnet-suresh.com/2011/01/how-to-delete-records-in-gridview-with.html


    protected void EditBtn_Click(object sender, EventArgs e)
    {
        Button btn = (Button)sender;

        //Get the row that contains this button
        GridViewRow gvr = (GridViewRow)btn.NamingContainer;
        int index = gvr.RowIndex;
        string ID = GridView1.Rows[index].Cells[0].Text;

        string constr = ConfigurationManager.ConnectionStrings["EmpConstr"].ConnectionString;
        SqlConnection con = new SqlConnection();
        string strSQL = "SELECT * from Employee where employeeid = " + Convert.ToInt32(ID);
        SqlDataAdapter sqlAdpt = new SqlDataAdapter(strSQL,constr);
        DataTable dt = new DataTable();

        sqlAdpt.Fill(dt);

        txtHiddenEmpID.Value = ID;
        txtEmpName.Text = dt.Rows[0]["EmployeeName"].ToString();
        addressBox.Text = dt.Rows[0]["Address"].ToString();
        dobBox.Text =  Convert.ToDateTime(dt.Rows[0]["DateOfBirth"].ToString()).ToString("dd/MM/yyyy");
        salaryBox.Text = dt.Rows[0]["Salary"].ToString();
        string gender = dt.Rows[0]["Gender"].ToString();
        if (gender == "Male")
        {
            gendermale.Checked = true;
            genderfemale.Checked = false;
        }
        else
        {
            gendermale.Checked = false;
            genderfemale.Checked = true; 
        }
        GetData();
    }

    //Delete record from Gridview
    public string date { get; set; }
    protected void DelBtn_Click(object sender, EventArgs e)
    {

        LinkButton lnkbtn = sender as LinkButton;
        //getting particular row linkbutton
        GridViewRow gvrow = lnkbtn.NamingContainer as GridViewRow;
        //getting userid of particular row
        int EmpID = Convert.ToInt32(GridView1.DataKeys[gvrow.RowIndex].Value.ToString());
        string username = gvrow.Cells[0].Text;
        con.Open();
        SqlCommand cmd = new SqlCommand("Delete from Employee where EmployeeID=" + EmpID, con);
        int result = cmd.ExecuteNonQuery();
        con.Close();
        if (result == 1)
        {
            GetData();
            //Displaying alert message after successfully deletion of user
            ScriptManager.RegisterStartupScript(this, this.GetType(), "alertmessage", "javascript:alert('" + username + " details deleted successfully')", true);
        }
        GetData();
    }

    public string Constr { get; set; }


    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GetData();
        GridView1.PageIndex = e.NewPageIndex;
        GridView1.DataBind();
    }

}
阳光灿烂的桑迪普

尝试将以下代码使用sql查询更新表

string query = "update Employee set EmployeeName=@enm,Address=@address, DateOfBirth= 
 @dob, Salary=@salary,Gender=@gender where EmployeeID=@EmpID" 

                cmd = new SqlCommand(query, con);
                cmd.Parameters.AddWithValue("@EmpID", EmpID);
                cmd.Parameters.AddWithValue("@enm", EmpName);
                cmd.Parameters.AddWithValue("@address", address);
                cmd.Parameters.AddWithValue("@dob", dob);
                cmd.Parameters.AddWithValue("@salary", salary);
                cmd.Parameters.AddWithValue("@gender", gender);


                count = cmd.ExecuteNonQuery();

这对您有何帮助。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

更新旧记录而不是创建新记录?

来自分类Dev

插入新行而不是更新

来自分类Dev

Rails创建新记录而不是更新

来自分类Dev

保存hasMany总是添加记录而不是更新

来自分类Dev

保存hasMany总是添加记录而不是更新

来自分类Dev

添加新列时更新旧记录

来自分类Dev

Spring JPA创建新记录,而不是更新现有记录

来自分类Dev

为什么laravel的updateOrCreate创建新记录而不是更新记录?

来自分类Dev

Hibernate 映射一个 Map (HashMap) 总是添加新行而不是更新

来自分类Dev

CDI正在创建新记录,而不是进行更新

来自分类Dev

Rails 3.2 fields_for添加而不是更新记录

来自分类Dev

如何更新数据和添加新行

来自分类Dev

Gridview,更新功能影响所有行而不是单行

来自分类Dev

更新GridView中的行

来自分类Dev

Gridview行未更新-

来自分类Dev

Livewire:添加新记录后无法更新子组件

来自分类Dev

我正在尝试添加更新信息功能,但它没有更新,而是添加了新记录

来自分类Dev

Indexeddb添加新值而不是更新现有值

来自分类Dev

更新上一行而不是打印新行

来自分类Dev

如何使用ID检查记录,然后记录是否存在(如果不添加新记录则更新)

来自分类Dev

添加新行时无法添加或更新子行

来自分类Dev

Rails ActiveRecord.new创建一个新记录,而不是更新现有记录

来自分类Dev

使用 Swift 更新实体记录而不是使用 CoreData 创建新记录

来自分类Dev

在Gridview的中间添加新行

来自分类Dev

在Access VBA SQL中更新对链接表的更新时,向Access表添加新记录

来自分类Dev

awk | 在文件中添加新行或更新现有行

来自分类Dev

实体框架插入新行而不是更新它们

来自分类Dev

Symfony OneToMany与关联数组:插入新行,而不是更新

来自分类Dev

Google表单更新响应选项,而不是创建新行

Related 相关文章

  1. 1

    更新旧记录而不是创建新记录?

  2. 2

    插入新行而不是更新

  3. 3

    Rails创建新记录而不是更新

  4. 4

    保存hasMany总是添加记录而不是更新

  5. 5

    保存hasMany总是添加记录而不是更新

  6. 6

    添加新列时更新旧记录

  7. 7

    Spring JPA创建新记录,而不是更新现有记录

  8. 8

    为什么laravel的updateOrCreate创建新记录而不是更新记录?

  9. 9

    Hibernate 映射一个 Map (HashMap) 总是添加新行而不是更新

  10. 10

    CDI正在创建新记录,而不是进行更新

  11. 11

    Rails 3.2 fields_for添加而不是更新记录

  12. 12

    如何更新数据和添加新行

  13. 13

    Gridview,更新功能影响所有行而不是单行

  14. 14

    更新GridView中的行

  15. 15

    Gridview行未更新-

  16. 16

    Livewire:添加新记录后无法更新子组件

  17. 17

    我正在尝试添加更新信息功能,但它没有更新,而是添加了新记录

  18. 18

    Indexeddb添加新值而不是更新现有值

  19. 19

    更新上一行而不是打印新行

  20. 20

    如何使用ID检查记录,然后记录是否存在(如果不添加新记录则更新)

  21. 21

    添加新行时无法添加或更新子行

  22. 22

    Rails ActiveRecord.new创建一个新记录,而不是更新现有记录

  23. 23

    使用 Swift 更新实体记录而不是使用 CoreData 创建新记录

  24. 24

    在Gridview的中间添加新行

  25. 25

    在Access VBA SQL中更新对链接表的更新时,向Access表添加新记录

  26. 26

    awk | 在文件中添加新行或更新现有行

  27. 27

    实体框架插入新行而不是更新它们

  28. 28

    Symfony OneToMany与关联数组:插入新行,而不是更新

  29. 29

    Google表单更新响应选项,而不是创建新行

热门标签

归档