各位好,急需请教一问题,请大家鼎力相助啊。由于本人不会C#所以问题不是太会描述,请大家见谅。
程序就是前台页面上用到一个gridview通过调用一个固定的存储过程返回的数据集进行显示(返回永远都是一条记录),由于有两列需要能进一步点击,所以就设置成了手动绑定,并且那两列的值都是调用那一个固定的存储过程的唯一入参,等于说就是只要点的列不为空就把它的值传进去,后台返回后gridview就重新绑定。但有个问题一直不知道咋回事儿。
程序症状如下:当点过一次后,页面上的数据就不怎么动了,就第一次点的时候能通过存储过程返回不同的记录,再点的时候好象传进的参数就不会再变了,而且永远是第一次刚进页面什么都没点时显示的那条记录。 大家帮帮忙吧,在GOOGLE上搜来搜去也没什么效果,主要是一不会C,二不知道问题怎么描述,看了很多贴都是说怎么绑定,做页面的人说没发现程序有啥问题,我看代码也就几行,无非就是生成ADO的相关对象,打开连接,运行,绑定,看着跟DELPHI流程也差不多,但不知道为何就是出现这问题。我看他读值用的"table[0], rows[0]"这样,看意思好象就是数据集里的第一个表,第一行。我想是不是有什么数据集的关闭释放上在C#里有什么讲究,会不会每次调用存储过程后都内存增加表了啊,要不咋一到第三次调用,界面上数据就又成原始状态而不再变化了呢,又或者rows是不是增加了,当前的记录已经不是rows[0]了呢?可看grid里又永远是一行记录,也没见每调用一次就多出来一条记录。乱试了半天也没发现是啥问题,最后页面上加了两个按钮去模拟点那两列了,GRID用的自动绑定。这样子看着是实在不爽啊。我不会C#,请各位有解决办法时发段代码过来,我让做页面人试试。
望各位高手不要吝啬语言啊
程序就是前台页面上用到一个gridview通过调用一个固定的存储过程返回的数据集进行显示(返回永远都是一条记录),由于有两列需要能进一步点击,所以就设置成了手动绑定,并且那两列的值都是调用那一个固定的存储过程的唯一入参,等于说就是只要点的列不为空就把它的值传进去,后台返回后gridview就重新绑定。但有个问题一直不知道咋回事儿。
程序症状如下:当点过一次后,页面上的数据就不怎么动了,就第一次点的时候能通过存储过程返回不同的记录,再点的时候好象传进的参数就不会再变了,而且永远是第一次刚进页面什么都没点时显示的那条记录。 大家帮帮忙吧,在GOOGLE上搜来搜去也没什么效果,主要是一不会C,二不知道问题怎么描述,看了很多贴都是说怎么绑定,做页面的人说没发现程序有啥问题,我看代码也就几行,无非就是生成ADO的相关对象,打开连接,运行,绑定,看着跟DELPHI流程也差不多,但不知道为何就是出现这问题。我看他读值用的"table[0], rows[0]"这样,看意思好象就是数据集里的第一个表,第一行。我想是不是有什么数据集的关闭释放上在C#里有什么讲究,会不会每次调用存储过程后都内存增加表了啊,要不咋一到第三次调用,界面上数据就又成原始状态而不再变化了呢,又或者rows是不是增加了,当前的记录已经不是rows[0]了呢?可看grid里又永远是一行记录,也没见每调用一次就多出来一条记录。乱试了半天也没发现是啥问题,最后页面上加了两个按钮去模拟点那两列了,GRID用的自动绑定。这样子看着是实在不爽啊。我不会C#,请各位有解决办法时发段代码过来,我让做页面人试试。
望各位高手不要吝啬语言啊
解决方案 »
- 很奇怪的问题,我要疯了。编的登录窗口老是报错啊。说不包含适合于入口点的静态“Main”方法,这是怎么回事啊。求前辈指教一下
- 这个C#的正则表达式怎么写?
- 基础问题:做好网站后,如何把程序都编译成DLL,就不用cs了
- visible为false时控件还占着内存
- 做EXCEL编程以来,遇到的最难的难题
- 跪求一正则表达式提取字串内容
- 请问各位高手,图像压缩的问题(高分相送,敬请帮忙,谢绝灌水)。
- 急求相对应的解密方法.....请高手进来....
- 如何向一个bitmap/image中输出内容,如写一个字,画一条线等
- 串口通信
- 关于Compare方法的疑问
- Castle.Facilities.AutomaticTransactionManagement.dll 从哪来有的下载啊!
首先我们要建立数据库的连接字符串,这里有两种方法
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();
}
}
再次感谢所有回复者。
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>
好了,结贴了,再次感谢大家。
个人还是觉得xingjunli分析的有道理,只是我不懂,回头我自己开始研究C#。