?调试时取UPDATE的SQL语句能不能在数据库里更新啊?

解决方案 »

  1.   

    代码好象没什么问题,是不是BindGrid();没放在if(!IsPostBack)内!
    报什么错?
      

  2.   

    没有报错,就是处在编辑状态(各个单元格内文本框状态),点update没有反应。
      

  3.   

    updateCommand事件加了吗?列是不是动态生成的?
    否则可以将SDK的例子直接拷过来试试!
      

  4.   

    to xrll 
    我就是用你的方法,还是不行。
      

  5.   

    我用的是asp.net快速入门改的。
    http://localhost/quickstart/util/srcview.aspx?path=/quickstart/aspplus/samples/webforms/data/datagrid6.src
      

  6.   

    谢谢各位热心帮忙。<%@ Page Language="C#" Debug="true" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %><html><script language="C#" runat="server">    SqlConnection myConnection;    protected void Page_Load(Object Src, EventArgs E) 
        {
            myConnection = new SqlConnection("server=(local);database=wjldata;uid=sa;pwd=;");
            
            if (!IsPostBack)
                BindGrid();
        }    public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs E)
        {
            MyDataGrid.EditItemIndex = (int)E.Item.ItemIndex;
            BindGrid();
        }    public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs E)
        {
            MyDataGrid.EditItemIndex = -1;
            BindGrid();
        } public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e)
        {
            String updateCmd = "UPDATE farelist SET farenumber = @fnumber, shopname = @sname, farekind = @fk, fare = @fr, "
                 + "writeman = @wman, writedate = @wdate, re=@rm where farenumber = @fnumber";        SqlCommand myCommand = new SqlCommand(updateCmd, myConnection);        myCommand.Parameters.Add(new SqlParameter("@fnumber", SqlDbType.NVarChar, 10));
            myCommand.Parameters.Add(new SqlParameter("@sname", SqlDbType.NVarChar, 10));
            myCommand.Parameters.Add(new SqlParameter("@fk", SqlDbType.NVarChar, 10));
            myCommand.Parameters.Add(new SqlParameter("@fr", SqlDbType.NChar, 8));
            myCommand.Parameters.Add(new SqlParameter("@wman", SqlDbType.NVarChar, 10));
            myCommand.Parameters.Add(new SqlParameter("@wdate", SqlDbType.NVarChar, 10));
            myCommand.Parameters.Add(new SqlParameter("@rm", SqlDbType.NChar, 200));
            myCommand.Parameters["@fnumber"].Value = MyDataGrid.DataKeys[(int)e.Item.ItemIndex];        String[] cols = {"@fnumber","@sname","@fk","@fr","@wman","@wdate","@rm"};        int numCols = e.Item.Cells.Count;
            for (int i=1; i<numCols-1; i++) //skip first, second and last column
            {
                String colvalue =((TextBox)e.Item.Cells[i].Controls[0]).Text;            // check for null values in required fields
                if (i<6 && colvalue == "")
                {
                    Message.InnerHtml = "ERROR: Null values not allowed for Author ID, Name or Phone";
                    Message.Style["color"] = "red";
                    return;
                }            myCommand.Parameters[cols[i-1]].Value = colvalue;
            }       
            myCommand.Connection.Open();        try
            {
                myCommand.ExecuteNonQuery();
                Message.InnerHtml = "<b>Record Updated</b><br>" + updateCmd;
                MyDataGrid.EditItemIndex = -1;
            }
            catch (SqlException exc)
            {
                if (exc.Number == 2627)
                    Message.InnerHtml = "ERROR: A record already exists with the same primary key";
                else
                    Message.InnerHtml = "ERROR: Could not update record, please ensure the fields are correctly filled out";
                Message.Style["color"] = "red";
            }        myCommand.Connection.Close();        BindGrid();
        }
        public void BindGrid() 
        {
            SqlDataAdapter myCommand = new SqlDataAdapter("select * from farelist", myConnection);        DataSet ds = new DataSet();
            myCommand.Fill(ds, "farelist");        MyDataGrid.DataSource=ds.Tables["farelist"].DefaultView;
            MyDataGrid.DataBind();
        }</script><body style="font: 10pt verdana">  <form runat="server">    <h3><font face="Verdana">Updating a Row of Data w/ Read-Only Column</font></h3>    <span id="Message" EnableViewState="false" style="font: arial 11pt;" runat="server"/><p>    <ASP:DataGrid id="MyDataGrid" runat="server"
          Width="800"
          BackColor="#ccccff" 
          BorderColor="black"
          ShowFooter="false" 
          CellPadding=3 
          CellSpacing="0"
          Font-Name="Verdana"
          Font-Size="8pt"
          HeaderStyle-BackColor="#aaaadd"
          OnEditCommand="MyDataGrid_Edit"
          OnCancelCommand="MyDataGrid_Cancel"
          OnUpdateCommand="MyDataGrid_Update"
          DataKeyField="farenumber"
          AutoGenerateColumns="false"
        >
                <Columns>
            <asp:EditCommandColumn HeaderText="操作区" EditText="Edit" CancelText="Cancel" UpdateText="Update" ItemStyle-Wrap="false"/>
            <asp:BoundColumn HeaderText="编号" SortExpression="farenumber" DataField="farenumber"/>
            <asp:BoundColumn HeaderText="商场名称" SortExpression="shopname" DataField="shopname"/>
            <asp:BoundColumn HeaderText="费用种类" SortExpression="farekind" DataField="farekind"/>
            <asp:BoundColumn HeaderText="费用" SortExpression="fare" DataField="fare"/>
            <asp:BoundColumn HeaderText="创建人" SortExpression="writeman" DataField="writeman"/>
            <asp:BoundColumn HeaderText="创建日期" SortExpression="writedate" DataField="writedate"/>
            <asp:BoundColumn HeaderText="备注" SortExpression="re" DataField="re"/>
          </Columns>    </ASP:DataGrid>  </form></body>
    </html>
      

  7.   

    <%@ Page Language="C#" Debug="true" %>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SqlClient" %>
    <html>
    <script language="C#" runat="server">
        SqlConnection myConnection;
        protected void Page_Load(Object Src, EventArgs E) 
        {
            myConnection = new SqlConnection("server=(local)\\NetSDK;database=insideweb;Integrated Security=SSPI");
            
            if (!IsPostBack)
                BindGrid();
        }
        public void MyDataGrid_Edit(Object sender, DataGridCommandEventArgs E)
        {
            MyDataGrid.EditItemIndex = (int)E.Item.ItemIndex;
            BindGrid();
        }
        public void MyDataGrid_Cancel(Object sender, DataGridCommandEventArgs E)
        {
            MyDataGrid.EditItemIndex = -1;
            BindGrid();
        }
     public void MyDataGrid_Update(Object sender, DataGridCommandEventArgs e)
        {
            String updateCmd = "UPDATE farelist SET farenumber = @fnumber, shopname = @sname, farekind = @fk, fare = @fr, writeman = @wman, writedate = @wdate, re=@rm where farenumber = @fnumber";
            SqlCommand myCommand = new SqlCommand(updateCmd, myConnection);
            myCommand.Parameters.Add(new SqlParameter("@fnumber", SqlDbType.NVarChar, 50));
    myCommand.Parameters["@fnumber"].Value=((TextBox)e.Item.Cells[1].Controls[0]).Text;
            myCommand.Parameters.Add(new SqlParameter("@sname", SqlDbType.NVarChar, 50));
    myCommand.Parameters["@sname"].Value=((TextBox)e.Item.Cells[2].Controls[0]).Text;
            myCommand.Parameters.Add(new SqlParameter("@fk", SqlDbType.NVarChar, 50));
    myCommand.Parameters["@fk"].Value=((TextBox)e.Item.Cells[3].Controls[0]).Text;
            myCommand.Parameters.Add(new SqlParameter("@fr", SqlDbType.NVarChar, 50));
    myCommand.Parameters["@fr"].Value=((TextBox)e.Item.Cells[4].Controls[0]).Text;
            myCommand.Parameters.Add(new SqlParameter("@wman", SqlDbType.NVarChar, 50));
    myCommand.Parameters["@wman"].Value=((TextBox)e.Item.Cells[5].Controls[0]).Text;
            myCommand.Parameters.Add(new SqlParameter("@wdate", SqlDbType.NVarChar, 50));
    myCommand.Parameters["@wdate"].Value=((TextBox)e.Item.Cells[6].Controls[0]).Text;
            myCommand.Parameters.Add(new SqlParameter("@rm", SqlDbType.NVarChar, 50));
    myCommand.Parameters["@rm"].Value=((TextBox)e.Item.Cells[7].Controls[0]).Text;
           myCommand.Connection.Open();
            try
            {
                myCommand.ExecuteNonQuery();
                Message.InnerHtml = "<b>Record Updated</b><br>" + updateCmd;
                MyDataGrid.EditItemIndex = -1;
            }
            catch (SqlException exc)
            {
                if (exc.Number == 2627)
                    Message.InnerHtml = "ERROR: A record already exists with the same primary key";
                else
                    Message.InnerHtml = "ERROR: Could not update record, please ensure the fields are correctly filled out";
                    Message.Style["color"] = "red";
            }
            myCommand.Connection.Close();
            BindGrid();
        }
        public void BindGrid() 
        {
            SqlDataAdapter myCommand = new SqlDataAdapter("select * from farelist", myConnection);
            DataSet ds = new DataSet();
            myCommand.Fill(ds, "farelist");
            MyDataGrid.DataSource=ds.Tables["farelist"].DefaultView;
            MyDataGrid.DataBind();
        }
    </script><body style="font: 10pt verdana">  <form runat="server">    <h3><font face="Verdana">Updating a Row of Data w/ Read-Only Column</font></h3>    <span id="Message" EnableViewState="false" style="font: arial 11pt;" runat="server"/><p>    <ASP:DataGrid id="MyDataGrid" runat="server"
          Width="800"
          BackColor="#ccccff" 
          BorderColor="black"
          ShowFooter="false" 
          CellPadding=3 
          CellSpacing="0"
          Font-Name="Verdana"
          Font-Size="8pt"
          HeaderStyle-BackColor="#aaaadd"
          OnEditCommand="MyDataGrid_Edit"
          OnCancelCommand="MyDataGrid_Cancel"
          OnUpdateCommand="MyDataGrid_Update"
          DataKeyField="farenumber"
          AutoGenerateColumns="false"
        >
          <Columns>
            <asp:EditCommandColumn HeaderText="操作区" EditText="Edit" CancelText="Cancel" UpdateText="Update" ItemStyle-Wrap="false"/>
            <asp:BoundColumn HeaderText="编号" SortExpression="farenumber" DataField="farenumber"/>
            <asp:BoundColumn HeaderText="商场名称" SortExpression="shopname" DataField="shopname"/>
            <asp:BoundColumn HeaderText="费用种类" SortExpression="farekind" DataField="farekind"/>
            <asp:BoundColumn HeaderText="费用" SortExpression="fare" DataField="fare"/>
            <asp:BoundColumn HeaderText="创建人" SortExpression="writeman" DataField="writeman"/>
            <asp:BoundColumn HeaderText="创建日期" SortExpression="writedate" DataField="writedate"/>
            <asp:BoundColumn HeaderText="备注" SortExpression="re" DataField="re"/>
          </Columns>
        </ASP:DataGrid>
      </form>
    </body>
    </html>