各位好,急需请教一问题,请大家鼎力相助啊。由于本人不会C#所以问题不是太会描述,请大家见谅。 
程序就是前台页面上用到一个gridview通过调用一个固定的存储过程返回的数据集进行显示(返回永远都是一条记录),由于有两列需要能进一步点击,所以就设置成了手动绑定,并且那两列的值都是调用那一个固定的存储过程的唯一入参,等于说就是只要点的列不为空就把它的值传进去,后台返回后gridview就重新绑定。但有个问题一直不知道咋回事儿。 
程序症状如下:当点过一次后,页面上的数据就不怎么动了,就第一次点的时候能通过存储过程返回不同的记录,再点的时候好象传进的参数就不会再变了,而且永远是第一次刚进页面什么都没点时显示的那条记录。 大家帮帮忙吧,在GOOGLE上搜来搜去也没什么效果,主要是一不会C,二不知道问题怎么描述,看了很多贴都是说怎么绑定,做页面的人说没发现程序有啥问题,我看代码也就几行,无非就是生成ADO的相关对象,打开连接,运行,绑定,看着跟DELPHI流程也差不多,但不知道为何就是出现这问题。我看他读值用的"table[0], rows[0]"这样,看意思好象就是数据集里的第一个表,第一行。我想是不是有什么数据集的关闭释放上在C#里有什么讲究,会不会每次调用存储过程后都内存增加表了啊,要不咋一到第三次调用,界面上数据就又成原始状态而不再变化了呢,又或者rows是不是增加了,当前的记录已经不是rows[0]了呢?可看grid里又永远是一行记录,也没见每调用一次就多出来一条记录。乱试了半天也没发现是啥问题,最后页面上加了两个按钮去模拟点那两列了,GRID用的自动绑定。这样子看着是实在不爽啊。我不会C#,请各位有解决办法时发段代码过来,我让做页面人试试。
望各位高手不要吝啬语言啊  

解决方案 »

  1.   

    http://blog.csdn.net/21aspnet/archive/2007/03/25/1540301.aspx
      

  2.   

    看下ado.nethttp://blog.163.com/jiaxianglai2/blog/static/119072118200952842034940/
    首先我们要建立数据库的连接字符串,这里有两种方法
    1.写在web.config配置文件中,代码如下:
    <appSettings>
           <add key="Str" value="server=.;database=master;uid=sa;pwd=sa"/>
    </appSettings>
    2.写在页面的后台中,代码如下:
    string Str = "server=.;database=master;uid=sa;pwd=sa";从代码上看两者的写法很相似,server是表示数据库的位置,"."表示的是本机数据库,也可以换成IP的形式
    server=127.0.0.1这个也是表示本机,如果数据库架设在其他的机器上,则换成对应的机器的IP就可以
    了.database表示所要访问的数据库的名称,uid,pwd就是用户名和密码的缩写.
    写完数据库连接字符串后我们就可以访问数据库进行对数据的读取操作了,我常用的写法也有两种:
    1.SqlCommand
          SqlCommand cmd = new SqlCommand("select * from CallList", conn);
          cmd.ExecuteNonQuery();
          SqlDataReader dr = cmd.ExecuteReader();
    2.SqlDataAdapter
          SqlDataAdapter da = new SqlDataAdapter("select * from CallList", conn);
          DataSet ds = new DataSet();
          da.Fill(ds);
    1中通过Sqlcommand提交SQL语句并把执行结果返回到SqlDataReader,2中是通过SqlDataAdapter接受SQL语句
    的执行结果,但是SqlDataAdapter并不是数据集,所以要把SqlDataAdapter中的内容保存到数据集DataSet中,
    两个语句中都出现了conn,它是用来执行数据库连接字符串的实例化的对象,写法如下:
    SqlConnection conn = new SqlConnection(str);Str赋值"server=.;database=master;uid=sa;pwd=sa"后的
    自定义变量. 这样我们就完成了对数据库的连接和读取的操作.以下是我整理的代码:private void DataBaseConn()
        {        //不在Web.config设置连接字符串时的连接数据库写法
            /*
            string Str = "server=.;database=master;uid=sa;pwd=sa";
            using(SqlConnection conn = new SqlConnection(Str))
            {
                代码段......
            }
            */        //连接数据库,读取web.config中数据库连接字符串
            using (SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["Str"]))
            {
                //打开连接
                conn.Open();            //读取数据库表CallList内容并填充到数据集DataSet            /*使用SqlCommand进行数据绑定
                SqlCommand cmd = new SqlCommand("select * from CallList", conn);
                cmd.ExecuteNonQuery();
                SqlDataReader dr = cmd.ExecuteReader();
                GridView1.DataSource = dr;
                GridView1.DataBind();
                */
               
                SqlDataAdapter da = new SqlDataAdapter("select * from CallList", conn);
                DataSet ds = new DataSet();
                da.Fill(ds);            //GridView数据绑定
                GridView1.DataSource = ds;
                GridView1.DataBind();
            }
        }
      

  3.   

    不好意思,各位,可能我写的字太多了,大家都只看标题了。请看看内容吧,我并不是问怎么把数据集绑定到GRID的问题,而是绑了以后出现的怪问题不知道咋回事儿。请各位花半分钟看看我写的内容吧。
    再次感谢所有回复者。
      

  4.   

     看起问题可能是页面缓存的问题,
      1、刷新页面重新绑定数据在重新调用原页面的时候在给页面传一个参数:href="****.ASPX?random()"
      2、Response.Buffer = true;
         Response.ExpiresAbsolute = System.DateTime.Now.AddSeconds(-1);
         Response.Expires = 0;
         Response.CacheControl = "no-cache";
         Response.AddHeader("Pragma", "No-Cache");
     3、 HTML方法
            <HEAD>
            <META HTTP-EQUIV="Pragma" CONTENT="no-cache">
            <META HTTP-EQUIV="Cache-Control" CONTENT="no-cache">
            <META HTTP-EQUIV="Expires" CONTENT="0">
            </HEAD>
      

  5.   

      现在基本都用AJAX处理了,这个问题貌似不出现了
      

  6.   

    谢谢xingjunli,虽不懂C#,但觉得你说的有道理,我让人试试。
      

  7.   

    解决了,听前面的人跟我说有个方法只能用英文字段名,我就把存储过程输出的其中两个字段名的中文别名给去掉了,然后他一试就好了。原来想着能给写页面的省点事儿,我还专门起的别名,让他们直接用,没想到,唉,我真是多此一举啊。
    好了,结贴了,再次感谢大家。
    个人还是觉得xingjunli分析的有道理,只是我不懂,回头我自己开始研究C#。