Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net c#网格视图更新错误_C#_Asp.net - Fatal编程技术网

Asp.net c#网格视图更新错误

Asp.net c#网格视图更新错误,c#,asp.net,C#,Asp.net,每次尝试使用OnRowUpdate函数时,都会引发System.NullReferenceException错误。Gridview在页面加载时绑定没有问题,我也可以毫无问题地删除行。以下是我的代码: Aspx <asp:GridView ID="datagrid" runat="server" DataKeyNames="Emp_ID" CssClass="EmployeeGridView" EditRowStyle-CssClass="GridViewEditRow" PagerStyl

每次尝试使用OnRowUpdate函数时,都会引发System.NullReferenceException错误。Gridview在页面加载时绑定没有问题,我也可以毫无问题地删除行。以下是我的代码:

Aspx

<asp:GridView ID="datagrid" runat="server" DataKeyNames="Emp_ID" CssClass="EmployeeGridView" EditRowStyle-CssClass="GridViewEditRow" PagerStyle-CssClass="pager" HeaderStyle-CssClass="header" RowStyle-CssClass="rows" 
        AutoGenerateColumns="false" AllowPaging="true" OnRowCancelingEdit="OnRowCancelingEdit" OnRowDeleting="OnRowDeleting"
        OnRowEditing="OnRowEditing" OnRowUpdating="OnRowUpdating"
        OnPageIndexChanging="OnPageIndexChanging" PageSize="10"
        >
        <Columns>
        <asp:BoundField ItemStyle-Width="150px" DataField="Emp_ID" HeaderText="Employee ID" />
        <asp:BoundField ItemStyle-Width="150px" DataField="FName" HeaderText="First Name" />
        <asp:BoundField ItemStyle-Width="150px" DataField="LName" HeaderText="Last Name" />
        <asp:BoundField ItemStyle-Width="150px" DataField="Email" HeaderText="Email" />
        <asp:BoundField ItemStyle-Width="100px" DataField="DOB" HeaderText="DOB" />
        <asp:BoundField ItemStyle-Width="150px" DataField="EmpRole" HeaderText="Role" />
        <asp:BoundField ItemStyle-Width="150px" DataField="Notes" HeaderText="Notes" />
        <asp:CommandField ShowEditButton="true" />
        <asp:CommandField ShowDeleteButton="true" />
        </Columns>
       </asp:GridView>

如果有人知道问题出在哪里,我们将非常感谢您的帮助

您尝试更新的值之一为空。例外情况究竟来自哪里?哪一行?是否已验证所有参数都已填充值?字符串注释=(行。单元格[7]。控件[0]为文本框)。文本;这就是例外情况的来源。在数据库中,这些字符串一开始是空的,但我将其更改为默认为空字符串,所以这就是我要更新的内容。您可以在'cmd.ExecuteNonQuery()之前使用quick watch'并检查哪个项为空。当debigger点击该位置时,将断点放在
connectionstring
处,验证所有变量是否有值或是否引发异常。
protected void OnRowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        GridViewRow row = datagrid.Rows[e.RowIndex];
        int Emp_ID = Convert.ToInt32(datagrid.DataKeys[e.RowIndex].Values[0]);
        string FName = (row.Cells[2].Controls[0] as TextBox).Text;
        string LName = (row.Cells[3].Controls[0] as TextBox).Text;
        string Email = (row.Cells[4].Controls[0] as TextBox).Text;
        string DOB = (row.Cells[5].Controls[0] as TextBox).Text;
        string role = (row.Cells[6].Controls[0] as TextBox).Text;
        string notes = (row.Cells[7].Controls[0] as TextBox).Text;
        string constr = ConfigurationManager.ConnectionStrings["MainFYPConnectionString"].ConnectionString;
        using (SqlConnection con = new SqlConnection(constr))
        {
            using (SqlCommand cmd = new SqlCommand("UPDATE tbl_Employees SET FName=@FName, LName=@LName, Email=@Email, DOB=@DOB, EmpRole = Emp@Role, Notes = @Notes  WHERE (Emp_ID = @Emp_ID)"))
            {
                cmd.Parameters.AddWithValue("@Emp_ID", Emp_ID);
                cmd.Parameters.AddWithValue("@FName", FName);
                cmd.Parameters.AddWithValue("@Lname", LName);
                cmd.Parameters.AddWithValue("@Email", Email);
                cmd.Parameters.AddWithValue("@DOB", DOB);
                cmd.Parameters.AddWithValue("@EmpRole", role);
                cmd.Parameters.AddWithValue("@Notes", notes);
                cmd.Connection = con;
                con.Open();
                cmd.ExecuteNonQuery();
                con.Close();
            }
        }
        datagrid.EditIndex = -1;
        this.BindGrid();
    }