C#.net中GRIDVIEW的SQL更新语句的问题

** 我要做的是点击GRIDVIEW(代码加载的内容)中更新功能按钮 然后更新相关信息,由于某些原因(说起来太麻烦了),只能使用自己写的代码而不是自动生成的UPDATE语句。
但是自己写的UPDATE语句出现问题,更新信息失败。在SQL SERVER中能正常使用 所以我猜是调用GRIDVIEW中数据时出现问题。但是试过很多方法都不能使用 不知道问题出现在哪里 希望前辈们能帮我看看

下面贴出几张截图和代码
图一是在SQL中正常使用的代码
图片说明

图二所示 断点打完 那几个变量是空值
图片说明

图片说明

下面贴出代码

这是后端代码

using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class HTML_ScoreManage : System.Web.UI.Page
{
    SqlConnection sqlcon; 
    SqlCommand sqlcom;
    string strCon = "Data Source=DESKTOP-79153UB; Initial Catalog=db_StudentManage;Integrated Security=True";
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack) 
        { 
            bind(); 
        }
    }
    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e) 
    { 
        GridView1.EditIndex = e.NewEditIndex; 
        bind(); 
    }

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e) //出现问题的函数
    {
        sqlcon = new SqlConnection(strCon);
        string sqlstr = "update tb_Choosec001 set SName='" +GridView1.Rows[e.RowIndex].Cells[1].Text.ToString().Trim() +
                              "',Score='" + GridView1.Rows[e.RowIndex].Cells[2].Text.ToString().Trim() +
                              "' where SId='" + GridView1.DataKeys[e.RowIndex].Value.ToString() + "'";
                                                            //上面几个GRIDVIEW1表格中数据调用为空值
        sqlcom = new SqlCommand(sqlstr, sqlcon); 
        sqlcon.Open(); 
        sqlcom.ExecuteNonQuery(); 
        sqlcon.Close(); 
        GridView1.EditIndex = -1;
        bind(); 
    }
    //取消    
    protected void GridView1_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)    
    {        
        GridView1.EditIndex = -1;        
        bind();    
    }
     public void bind()    
     {
         string sqlstr = "select * from tb_Choosec001";        
         sqlcon = new SqlConnection(strCon);        
         SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);        
         DataSet myds = new DataSet();        
         sqlcon.Open();
         myda.Fill(myds, "tb_Choosec001");        
         GridView1.DataSource = myds;        
         GridView1.DataKeyNames = new string[] { "SId" };//主键        
         GridView1.DataBind();        
         sqlcon.Close();    
     }
}

下面是前端

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ScoreManage2.aspx.cs" Inherits="HTML_ScoreManage" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>

        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" CellPadding="4" ForeColor="#333333" GridLines="None" OnRowCancelingEdit="GridView1_RowCancelingEdit" OnRowEditing="GridView1_RowEditing" OnRowUpdating="GridView1_RowUpdating">
            <AlternatingRowStyle BackColor="White" ForeColor="#284775" />
            <Columns>
                <asp:BoundField DataField="SId" HeaderText="学生ID" />
                <asp:BoundField DataField="SName" HeaderText="学生姓名" />
                <asp:BoundField DataField="Score" HeaderText="成绩" />
                <asp:CommandField ShowSelectButton="True" />
                <asp:CommandField ShowEditButton="True" />
            </Columns>
            <EditRowStyle BackColor="#999999" />
            <FooterStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <HeaderStyle BackColor="#5D7B9D" Font-Bold="True" ForeColor="White" />
            <PagerStyle BackColor="#284775" ForeColor="White" HorizontalAlign="Center" />
            <RowStyle BackColor="#F7F6F3" ForeColor="#333333" />
            <SelectedRowStyle BackColor="#E2DED6" Font-Bold="True" ForeColor="#333333" />
            <SortedAscendingCellStyle BackColor="#E9E7E2" />
            <SortedAscendingHeaderStyle BackColor="#506C8C" />
            <SortedDescendingCellStyle BackColor="#FFFDF8" />
            <SortedDescendingHeaderStyle BackColor="#6F8DAE" />
        </asp:GridView>

    </div>
    </form>
</body>
</html>

1个回答

sqlcom = new SqlCommand(sqlstr, sqlcon);
这里下断点输出下sqlstr和你第一个图是否一致。仔细检查。

qq_43127702
Yuuu1 你好 不一样诶 更新的几个字段的内容是空值 前辈能不能帮我看一下 GRIDVIEW中GridView1.Rows[e.RowIndex].Cells[1].Text.ToString().Trim() 像这样的调用有错吗 他是空的诶
7 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问