public partial class index_dlh : System.Web.UI.Page
{
    string sqlstr = "Data Source=(local);Database=fhq_session; User id=sa;Pwd=sa";
    //SqlConnection sqlconn = new SqlConnection(sqlstr);
    SqlConnection sqlconn;    public void bind()
    {
        sqlconn = new SqlConnection(sqlstr);
        string str = "select ypxh AS 药品序号 ,ypmc AS 药品名称 ,ypgg AS 药品规格,pydm AS 拼音别名,wbdm AS 五笔别名,ypdw AS 药品单位 ,dcsl AS DCSL ,type AS TYPK from yk_typk";
        string str = "select * from yk_typk ";
        sqlconn.Open();
        SqlDataAdapter myda = new SqlDataAdapter(str, sqlconn);
        DataSet myds = new DataSet();
        myda.Fill(myds);
        GridView1.DataSource = myds;
        //GridView1.DataKeyNames = new string[] { "ypxh" };
        GridView1.DataBind();
        sqlconn.Close();
    }    protected void Page_Load(object sender, EventArgs e)
    {
        this.bind();
        if (!IsPostBack)
        {
            this.bind();
        }
        
    }
    
    protected void GridView1_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
       sqlconn = new SqlConnection(sqlstr);
        string str = "delete from YK_TYPK where YPXH='"+GridView1.DataKeys[e.RowIndex].Value+"'";        
        sqlconn.Open();
        SqlCommand sqlcom = new SqlCommand(str, sqlconn);
        sqlcom.ExecuteNonQuery();
        sqlconn.Close();
        this.bind();
    }
我执行删除的时候总报错是为什么呢???
如果这里不AS那列名就可以删除,改成汉字之后就能删除,,改了两天了!!!愁人@@
在线等!!!

解决方案 »

  1.   

    先设个断点,取出 GridView1.DataKeys[e.RowIndex].Value 看看是什么
      

  2.   

    首先指正你一个错误: 
    string str = "select ypxh AS 药品序号 ,ypmc AS 药品名称 ,ypgg AS 药品规格,pydm AS 拼音别名,wbdm AS 五笔别名,ypdw AS 药品单位 ,dcsl AS DCSL ,type AS TYPK from yk_typk"; 
            string str = "select * from yk_typk "; 
    这两个一起不报错的么???删除的时候,设个断点调试取值看看,如果不行,换个隐藏的LABEL绑定ID 然后再根据行号取ID的值
      

  3.   

        string str = "select ypxh AS 药品序号 ,ypmc AS 药品名称 ,ypgg AS 药品规格,pydm AS 拼音别名,wbdm AS 五笔别名,ypdw AS 药品单位 ,dcsl AS DCSL ,type AS TYPK from yk_typk";
            string str = "select * from yk_typk "; 
    ----------------------------------------------------------
    这两个重复了。根据情况保留一个
      string str = "delete from YK_TYPK where YPXH='"+GridView1.DataKeys[e.RowIndex].Value+"'";       
    ----------------------------------------------------------
    YPXH 是药品序号,在表中应该是主键吧,那么上面就不用加单引号了。改为:
      string str = "delete from YK_TYPK where YPXH="+GridView1.DataKeys[e.RowIndex].Value;  
      

  4.   

    string str = "select ypxh AS 药品序号 ,ypmc AS 药品名称 ,ypgg AS 药品规格,pydm AS 拼音别名,wbdm AS 五笔别名,ypdw AS 药品单位 ,dcsl AS DCSL ,type AS TYPK from yk_typk"; 
            string str = "select * from yk_typk "; 
    这个句SQL语句上面的是被屏辟了的,,,如果用下在这句SQL语句程序就不报错,如果用上面那句就报错。不好意思是我没有说清楚!!!!