平台:VS2010 WEB项目 SQL2008
数据表:如下在gridview中显示
 ID  Name Age TEL 
10001  小李  28 13888888888 更新
10002  小张  28 13866666666 更新
10003  小王  55 13888888888 更新
上面三条数据是我添加到数据库的数据.
一,在WEB页面中添加数据时,已经判断数据库NAME列不能重复,其他列是可以重复的.
二,现在我要对10003这条数据进行更新,NAME列的小王,我修改成小李,是可以更新的.当然这不是我要的效果,如果修改成小李,NAME列就重复了(我用添加数据同样的方法去判断NAME重复性,就不能修改AGE,TEL列了).
我要的效果是:
1.点10003这条数据进行更新,小王是不能修改成数据库NAME列相同名称的.小王可以修改成小蒋,小刘都可以,就是不能修改成小李,小张.
2.点10003这条数据进行更新,小王可以不修改,但可以修改AGE,TEL这两列的数据.
3.以上两条要同时满足,我应该怎么做?在此先谢过!所有分送上.

解决方案 »

  1.   

    点击编辑的时候将name那一列设为只读
      

  2.   

    <asp:TemplateField>
                    <EditItemTemplate>
                        <asp:Label ID="Label3" runat="server" Text='<%# Bind("id") %>'></asp:Label>
                        <%--编辑状态下为label或textbox的 ReadOnly="true"--%>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="Label1" runat="server" Text='<%# Bind("id") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
      

  3.   

    你可以类似这样,但是建议用参数化查询会更好些,呵呵protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
        {            GridViewRow myRow = GridView1.Rows[e.RowIndex];
        TextBox id = myRow.Cells[1].FindControl("txtId") as TextBox;
        TextBox name = myRow.Cells[2].FindControl("txtName") as TextBox;
        //判断数据重复
        string sql="select * from table1 where name='"+name+"' and id<>'"+id+"'";
        DataTable dt=DBHelper.GetTable(sql);
        if(dt.Rows.count==0)
        {
    //如果不重复则更新数据
    sql="update table1 set name='"+name+"' where id='"+id+"'";
    int rows=DBHelper.ExecuteNonQuery(sql);
    if(rows==1)
    {
       //更新成功
       GridView1.EditIndex = -1;
       //重新绑定
       DataBind();
    }
    }
      

  4.   

    回2楼,改成只读我想过了,不能满足对NAME进行修改!
      

  5.   

    改成小李以后
    //判断数据重复
        string sql="select * from table1 where name='"+name+"' and id<>'"+id+"'";
    这个sql的就会返回>1的数据,所以就是重复了,你可以试试
      

  6.   

    你让他随便改。但是更新之前先做存在check,如果不存在才可以将名字改成修改后的名字。比如说小蒋,如果已经有小李了。就不能修改成小李。但是别的数据可以更新。
      

  7.   

    楼主是要实现两个功能:
    编辑状态下:
     1.Age TEL 不修改的时候,更新Name,如果发现Name重复,不能更新进去。 2.Name 不修改的的时候,修改Age TEL 数据进行更行,能够更新进去。
     
    楼上的答案都不完善,我最近也遇到类似这样的问题,求大牛技术指导。