问题一:我点击“编辑”更改数据后点“更新”,但是没有反应,就是数据没有更新!!!
问题二:如何在TextBox里面加入验证控件,是不是转换成模板列?比如我想验证用户更改数据的时候是否输入的是数字?否则就不给更新,提示错误(ErrorMessage).
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
namespace WebApplication30
{
/// <summary>
/// WebForm1 的摘要说明。
/// </summary>
public class WebForm1 : System.Web.UI.Page
{
protected System.Web.UI.WebControls.DataGrid DataGrid1;

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
if(!Page.IsPostBack)
{
BindGrid();
}
}
public void BindGrid()
{
SqlConnection con=new SqlConnection("server=.;database=Northwind;uid=sa;pwd=123456");
SqlDataAdapter da=new SqlDataAdapter("select * from score",con);
con.Open();
DataSet ds=new DataSet();
da.Fill(ds,"score");
this.DataGrid1.DataSource=ds;
this.DataGrid1.DataBind();
con.Close();
} #region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{    
this.DataGrid1.CancelCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_CancelCommand);
this.DataGrid1.EditCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_EditCommand);
this.DataGrid1.UpdateCommand += new System.Web.UI.WebControls.DataGridCommandEventHandler(this.DataGrid1_UpdateCommand);
this.DataGrid1.SelectedIndexChanged += new System.EventHandler(this.DataGrid1_SelectedIndexChanged);
this.Load += new System.EventHandler(this.Page_Load); }
#endregion public void DataGrid1_SelectedIndexChanged(object sender, System.EventArgs e)
{

} public void DataGrid1_EditCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
this.DataGrid1.EditItemIndex=e.Item.ItemIndex;
this.BindGrid();
} public void DataGrid1_CancelCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{
 this.DataGrid1.EditItemIndex=-1;
this.BindGrid();
} public void DataGrid1_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e)
{     
SqlConnection con=new SqlConnection("server=.;database=Northwind;uid=sa;pwd=123456");
             con.Open();
 //更新数据库中的信息
 string strName=e.Item.Cells[1].Text;
int intChinese=Int32.Parse(((TextBox)e.Item.Cells[2].Controls[0]).Text);
int intMath=Int32.Parse(((TextBox)e.Item.Cells[3].Controls[0]).Text);
int intEnglish=Int32.Parse(((TextBox)e.Item.Cells[4].Controls[0]).Text);
             //更新数据库中的数据
string strUpdate="Update score Set Chinese="+intChinese+",Math="+intMath+",English="+intEnglish+" Where Name='"+strName+"'";
SqlCommand cmd=new SqlCommand(strUpdate,con);
cmd.ExecuteNonQuery();
this.DataGrid1.EditItemIndex=-1;
this.BindGrid();
}
}
}
前台编码:
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="WebApplication30.WebForm1" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>WebForm1</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="C#" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<FONT face="宋体">
<asp:datagrid id="DataGrid1" style="Z-INDEX: 101; LEFT: 128px; POSITION: absolute; TOP: 64px"
runat="server" OnCancelCommand="DataGrid1_CancelCommand" OnUpdateCommand="DataGrid1_UpdateCommand"
OnEditCommand="DataGrid1_EditCommand" AutoGenerateColumns="False" AlternatingItemStyle-BackColor="#eeeeee"
HeaderStyle-BackColor="#aaaadd">
<Columns>
<asp:EditCommandColumn HeaderText="操作区" EditText="编辑" UpdateText="更新" CancelText="取消" ButtonType="PushButton"></asp:EditCommandColumn>
<asp:BoundColumn HeaderText="姓名" DataField="Name"></asp:BoundColumn>
<asp:BoundColumn HeaderText="语文" DataField="Chinese"></asp:BoundColumn>
<asp:BoundColumn HeaderText="数学" DataField="Math"></asp:BoundColumn>
<asp:BoundColumn HeaderText="英语" DataField="English"></asp:BoundColumn>
</Columns>
</asp:datagrid></FONT></form>
</body>
</HTML>

解决方案 »

  1.   

    1 string strUpdate="Update score Set Chinese="'+intChinese+'",Math="'+intMath+'",English="'+intEnglish+'" Where Name='"+strName+"'";
    2 判断是否为数字型
    public static bool IsNum(string str)
    {
    string regextext = @"^[0-9]+$";
    Regex regex = new Regex (regextext,RegexOptions.None );
    return regex.IsMatch (str.Trim ());
    }
      

  2.   

    1.已经更新为string strUpdate="Update score Set Chinese='"+intChinese+"',Math='"+intMath+"',English='"+intEnglish+"' Where Name='"+strName+"'";
    的更新字符串,但是还是不行!
    2.不是在模板列里直接放验证控件不行吗?
      

  3.   

    你会单步调试么?你要在在你的updatecommand事件里面下断点,然后看是否执行里面的语句
      

  4.   

    以上就不说了,我用了单步调试,但是SQL语句明显是错误的:
    strUpdate "Update score Set Chinese=708,Math=80,English=81 Where Name=''"
    我该如何改???就是Where Name=''"这里错误啊!
      

  5.   

    SqlConnection con=new SqlConnection("server=.;database=Northwind;uid=sa;pwd=123456");
                 con.Open();--------------------------
    兄弟,貌似你数据库选错了吧
      

  6.   

    strUpdate "Update score Set Chinese=708,Math=80,English=81 Where Name=''"
    我该如何改???就是Where Name=''"这里错误啊!-------------
    strName没取到值
      

  7.   

    name是保留关键字,建议换个列名,
      

  8.   

    已经把name换成了TheName,但是还是不行!
    strUpdate "Update score Set Chinese=708,Math=80,English=81 Where Name=''"
    还是不对
    具体的我知道是SQL语句的 Name=''"这里不对,应该怎么改??
    SQL语句如下:
    string strUpdate="Update score Set Chinese="+intChinese+",Math="+intMath+",English="+intEnglish+" Where TheName='"+strName+"'";