为什么我的这个程序,每刷新一下页面,数据库查询的数据就会多显示一次

函数:publicDataTableGetRecord(Stringsql){try{scom.Connection=dbconfig.con;scom.CommandT... 函数:

public DataTable GetRecord(String sql){
try
{
scom.Connection = dbconfig.con;
scom.CommandText = sql;
da.SelectCommand = scom;
da.Fill(ds, "mytable");
tb = ds.Tables["mytable"];
return tb;
}
catch (SqlException e)
{
throw e;
}
finally
{
dbconfig.con.Close();
}
}
调用:
public partial class _Default : System.Web.UI.Page
{
protected DataTable dt = new DataTable();
protected dbbase dbbase1 = new dbbase();
protected void Page_Load(object sender, EventArgs e)
{
String sql = "select * from sys_menu";
dt = dbbase1.GetRecord(sql);
}
}
aspx页面:
<body>
<%
foreach (System.Data.DataRow row in dt.Rows){
Response.Write(row["menu_name"]);
}

%>
</body>
第一次打开页面显示:
系统管理
刷新一下页面显示:
系统管理 系统管理
刷新50次 页面就显示50个 系统管理
哪位高手给指点下,这是咋回事啊?本人新手,刚学,想不明白
展开
 我来答
zzfuping
2013-05-10 · 超过10用户采纳过TA的回答
知道答主
回答量:36
采纳率:0%
帮助的人:26.9万
展开全部
应该是因为每次刷新页面被视为回发调用了,foreach代码段每次刷新就被调用了,页面内容就不断增加了。将foreach代码段移到PageLoad方法中去,再在PageLoad方法的代码外层添加if(!IsCallBack){//你自己的代码}。这样信息设置代码就仅会在页面第一次加载时执行一次,刷新也不会重复增加信息了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
leiyangbdwk
2013-05-10 · TA获得超过3295个赞
知道大有可为答主
回答量:4975
采纳率:12%
帮助的人:4394万
展开全部

da.Fill(ds, "mytable");这里,你的ds是个全局变量吧?

重复fill会重复添加(貌似?)

解决方法:

  1. 把ds定义为局部变量

  2. 在fill之前把ds清空。

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式