前台代码:
<body>
    <form id="form1" runat="server">
    <div>
        <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
            DataKeyNames="HouseId" onrowediting="GridView1_RowEditing" 
            onrowupdating="GridView1_RowUpdating">
            <Columns>
            <asp:TemplateField>
            <ItemTemplate>
                 <asp:CheckBox ID="CheckBox1" runat="server" />
            </ItemTemplate>
            </asp:TemplateField>
            <asp:BoundField DataField="HouseId" HeaderText="HouseId" InsertVisible="False" 
                    ReadOnly="True" SortExpression="HouseId" />
                <asp:BoundField DataField="HouseArea" HeaderText="HouseArea" 
                    SortExpression="HouseArea" />
                <asp:BoundField DataField="HouseShape" HeaderText="HouseShape" 
                    SortExpression="HouseShape" />
                <asp:BoundField DataField="HouseFloor" HeaderText="HouseFloor" 
                    SortExpression="HouseFloor" />
                <asp:BoundField DataField="HouseDecoration" HeaderText="HouseDecoration" 
                    SortExpression="HouseDecoration" />
                <asp:BoundField DataField="HouseLocation" HeaderText="HouseLocation" 
                    SortExpression="HouseLocation" />
                <asp:BoundField DataField="HousePrice" HeaderText="HousePrice" 
                    SortExpression="HousePrice" />
                <asp:CommandField ShowEditButton="True" />
            </Columns>
        </asp:GridView>
            <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
            ConnectionString="<%$ ConnectionStrings:HouseConnectionString %>" 
            SelectCommand="SELECT * FROM [HouseInfo]"
            UpdateCommand="Update [HouseInfo] SET HouseArea=@HouseArea,HouseShape=@HouseShape,HouseFloor=@HouseFloor,HouseDecoration=@HouseDecoration,HouseLocation=@HouseLocation,HousePrice=@HousePrice WHERE (HouseId=@HouseId)"
            ></asp:SqlDataSource>
            <asp:Button ID="Button3" runat="server" Font-Size="9pt" Text="取消" OnClick="Button1_Click" />
            <asp:Button ID="Button4" runat="server" Font-Size="9pt" Text="删除" OnClick="Button2_Click" /> 
    </div>
    </form>
</body>后台代码:
public partial class Housemain : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
             if (!IsPostBack)
        {
            bind();
        }
    }
    public void bind()
    {
        SqlConnection sqlcon;
        string strCon = "Data Source=(local);Database=House;Uid=sa;Pwd=''";
        string sqlstr = "select * from HouseInfo";
        sqlcon = new SqlConnection(strCon);
        SqlDataAdapter myda = new SqlDataAdapter(sqlstr, sqlcon);
        DataSet myds = new DataSet();
        sqlcon.Open();
        myda.Fill(myds, "HouseInfo");
        GridView1.DataSource = myds;
        GridView1.DataKeyNames = new string[] { "HouseId" };
        GridView1.DataBind();
        sqlcon.Close();
    }
 
    protected void Button1_Click(object sender, EventArgs e)
    {
        for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
        {
            CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
            cbox.Checked = false;
        }    }
 
    protected void Button2_Click(object sender, EventArgs e)
    {
        try { 
        SqlConnection sqlcon;
        string strCon = "Data Source=(local);Database=House;Uid=sa;Pwd=''";
        sqlcon = new SqlConnection(strCon);
        SqlCommand sqlcom;
        for (int i = 0; i <= GridView1.Rows.Count - 1; i++)
        {
            CheckBox cbox = (CheckBox)GridView1.Rows[i].FindControl("CheckBox1");
            if (cbox.Checked == true)
            {                string sqlstr = "delete from HouseInfo where HouseId='" + GridView1.DataKeys[i].Value + "'";
                sqlcom = new SqlCommand(sqlstr, sqlcon);
                sqlcon.Open();
                sqlcom.ExecuteNonQuery(); 
            
                sqlcon.Close();
            }
        }
        bind();
            }catch (Exception ex) {
                    Console.Write("<script>javascript:alert('不能删除');</script>",ex);
                    Response.Write("<script>javascript:alert('不能删除,有外键约束');</script>");                }
    }    protected void GridView1_RowEditing(object sender, GridViewEditEventArgs e)
    {
        GridView1.EditIndex = e.NewEditIndex;
        this.bind();    }
    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    {
        SqlConnection sqlcon;
        string strCon = "Data Source=(local);Database=House;Uid=sa;Pwd=''";
        sqlcon = new SqlConnection(strCon);
        SqlCommand sqlcom;
        string sqlstr = "update HouseInfo set HouseId='"
             + GridView1.Rows[e.RowIndex].Cells[0].ToString().Trim() + "',HouseArea='"
            + GridView1.Rows[e.RowIndex].Cells[1].ToString().Trim() + "',HouseShape='"
            + GridView1.Rows[e.RowIndex].Cells[2].ToString().Trim() + "',HouseFloor='"
             + GridView1.Rows[e.RowIndex].Cells[3].ToString().Trim() + "',HouseDecoration='"
              + GridView1.Rows[e.RowIndex].Cells[4].ToString().Trim() + "',HouseLocation='"
                  + GridView1.Rows[e.RowIndex].Cells[5].ToString().Trim() + "',HousePrice='"
            + GridView1.Rows[e.RowIndex].Cells[6].ToString().Trim() + "' where HoueseId='"
            + GridView1.DataKeys[e.RowIndex].Values.ToString() + "'";        sqlcom = new SqlCommand(sqlstr, sqlcon);
        sqlcon.Open();
        sqlcom.ExecuteNonQuery();
        sqlcon.Close();
        this.GridView1.EditIndex = -1;
        bind();
    }
}
  sqlcom.ExecuteNonQuery();报错 列名 'HoueseId' 无效。 怎么修改?

解决方案 »

  1.   

    protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
    里面的sqlcom.ExecuteNonQuery();报错  编辑更新不了
      

  2.   

    HouseId是不是int类型,是int类型的不需要加单引号,其他数字类型,无论是否浮点类型都不加单引号,自己修改吧
      

  3.   

    HoueseId 列名无效,这个错误非常明显,检查表中是否有这个字段,特别是 拼写错误
      

  4.   

    把单引号全部去掉了 现在出现新问题,
    数字 名称 'System.Web.UI.WebControls' 包含的前缀数目超过了最大值。最大值为 3。
    怎么改呢?
      

  5.   

     string sqlstr = "update HouseInfo set HouseId='"
      + GridView1.Rows[e.RowIndex].Cells[0].ToString().Trim() + "',HouseArea='"
      + GridView1.Rows[e.RowIndex].Cells[1].ToString().Trim() + "',HouseShape='"
      + GridView1.Rows[e.RowIndex].Cells[2].ToString().Trim() + "',HouseFloor='"
      + GridView1.Rows[e.RowIndex].Cells[3].ToString().Trim() + "',HouseDecoration='"
      + GridView1.Rows[e.RowIndex].Cells[4].ToString().Trim() + "',HouseLocation='"
      + GridView1.Rows[e.RowIndex].Cells[5].ToString().Trim() + "',HousePrice='"
      + GridView1.Rows[e.RowIndex].Cells[6].ToString().Trim() + "' where HoueseId='"
      + GridView1.DataKeys[e.RowIndex].Values.ToString() + "'";
    很明显的错误。哎
      

  6.   

    字段名拼寫錯誤啊.HoueseId ? HouseId 前后不一致.