我用VWD下做个小项目,情况如下
1.在窗体上放置了一个GridView1,通过AccessDataSource1连接到Access数据库,还有一个bottun1
2.在AccessDataSource1中设置了默认的SELECT语句,“SELECT * FROM MyTable”
3.button1的点击事件如下:
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)        GridView1.AutoGenerateEditButton = True
       
        AccessDataSource1.SelectParameters.Clear()
        
        AccessDataSource1.SelectCommand = "SELECT  * FROM MyTable WHERE sex='男'"
        
                            
        GridView1.DataBind()
        
    End Sub
现在的问题是,当我点击button1后,gridview中确实显示了所有男员工的资料,并且在记录开头显示“编辑”按钮,但是当点击任何一行记录的开头的“编辑”按钮后,GridView中显示的却是所有人的资料,而非我想编辑的“男”性员工资料,似乎回到了AccessDataSource中默认的SELECT语句进行编辑了,有什么办法只对我选择出来的结果进行编辑吗?

解决方案 »

  1.   

    你应该是在页面加载时有设置了gridView的数据源,在!PageISPostBack里绑定。
      

  2.   

    谢谢ohyear,没错我是将GridView连接到了AccessDataSource数据源,而且在数据源里绑定了MyTable,并且设置了初始的SELECT语句(无条件),但是我又重新设置了带条件的SELECT语句了啊?  不明白您说的PageISPostBack属性是在哪里啊?是数据源的还是GridView的?我怎么找不到啊?不好意思,新手希望再次指点一二.
      

  3.   

    再次描述一下我的情况:  我是用最简单、最直接的方法来做一个先查询、后编辑的功能,基本上不用写代码的,流程如下:1、新建一个FORM,在上面放一个gridview,一个accessdatasource,一个button,一个dropdownlist,其中dropdwonlist里面放了“男、女”两个选项,默认是“男”
    2、将gridview绑定到accessdatasource
    3、在accessdatasource中配置了access数据源“mytable.mdb”,接着在配置SELECT语句时选择了“指定来自表或视图的列”,选择了数据表“员工”,字段选择了全体字段,其他条件均无定义。在“高级”选项中选择了“生成INSERT、UPDATE、DELETE语句”,然后结束。
    4、此时运行程序时,gridview显示的是全体员工资料,一切正常。
    5、为了修改指定范围的员工资料,于是在点击button后写了一个查询语句
    Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs)        GridView1.AutoGenerateEditButton = True
            AccessDataSource1.SelectParameters.Clear()
            AccessDataSource1.SelectCommand = "SELECT  * FROM MyTable WHERE sex='男'"
            GridView1.DataBind()
    End Sub
    6、此时的gridview显示的是男员工的资料,同时在每条记录的前面显示“编辑”按钮,正常。
    7、但是点击某个“编辑”按钮后,gridview立刻出现了男、女全体员工的资料,当前编辑记录位置也随之改变。感觉是最初定义的select语句将我刚才的查询语句覆盖了,导致全体男 女员工数据出现。
    8、寻求解决问题的办法。看在我打那么多字的份上,高手不要不屑一顾啊!
      

  4.   

    PageISPostBack是什么? 
    -----------------------
     ....................
    protected void Page_Load(object sender, EventArgs e)
        {
            if(ISPostBack)
            {
                 //绑定内容
            }
        }
      

  5.   

    protected void Page_Load(object sender, EventArgs e)
        {
            if(!IsPostBack)
            {
                 //绑定内容
            }
        }
    楼上的要严谨
      

  6.   

    谢谢volezbin,jimu8130,没错,按照你们的意图我该了程序,结果正确了,但是有一个小小的疑问,我用的是VWD里边的VB, if(!IsPostBack)系统运行时报错,但是写成 if(IsPostBack)就ok,不知道是什么原因???
      

  7.   

    你的分数可以给了吗?
    你的vb当然不能用C#语法
    现在你需要修改成:
    If Not IsPostBack Then
    '绑定数据
    End If