页面如何读取数据库并随机显示不重复的数据?
时间:2011-12-11
来源:互联网
页面上有一个按钮,点击一次按钮,页面就会显示7行数据,每点击一次按钮,前面显示的数据不会消失,数据库表TabelC有73行数据,如何读取数据库表TabelC并随机显示7行数据,并且每次显示的7行数据都不重复,而且最后一次点击按钮依然会显示最后的3行数据
下面的CS代码可以在页面上通过创Table来随机显示7行数据(但不能做到与之前显示过的数据不重复)
CS代码:
public class A : System.Web.UI.Page
{
Button rebt1;
Button rebt;
private void Page_Load(object sender, System.EventArgs e)
{
BandText();
if(!Page.IsPostBack)
{
}
}
protected void BandText()
{
Panel3.Controls.Add(new LiteralControl("<table align='center'>"));
try
{
conn.Open();
SqlCommand cmd = new SqlCommand("select top 7 * from TableC order by newid()", conn);
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = cmd;
da.Fill(ds, "infos");
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Panel3.Controls.Add(new LiteralControl("<tr>"));
TableCell cell = new TableCell();//创建单元格,也就是第一列
cell.Text = ds.Tables[0].Rows[i]["数据列1"].ToString();//设置单元格内的内容
Panel3.Controls.Add(cell);
Panel3.Controls.Add(new LiteralControl("\n"));
Panel3.Controls.Add(new LiteralControl("<td>"));
TextBox text = new TextBox();
text.ID = "txt" + ds.Tables[0].Rows[i]["Id"].ToString();
text.Text = ds.Tables[0].Rows[i]["数据列3"].ToString();
Panel3.Controls.Add(text);
Panel3.Controls.Add(new LiteralControl("</td>"));
Panel3.Controls.Add(new LiteralControl("<td>"));
Panel3.Controls.Add(new LiteralControl("</td>"));
Panel3.Controls.Add(new LiteralControl("</tr>"));
}
Panel3.Controls.Add(new LiteralControl("<tr>"));
Panel3.Controls.Add(new LiteralControl("<td>"));
Panel3.Controls.Add(new LiteralControl("</td>"));
Panel3.Controls.Add(new LiteralControl("<td>"));
rebt1 = new Button();
rebt1.ID = "rebt1";
rebt1.Text = "保存";
rebt1.Click += new EventHandler(rebt1_Click);
Panel3.Controls.Add(rebt1);
Panel3.Controls.Add(new LiteralControl("</td>"));
Panel3.Controls.Add(new LiteralControl("</tr>"));
Panel3.Controls.Add(new LiteralControl("</table>"));
}
catch (Exception)
{
throw;
}
finally
{
conn.Close();
}
}
}
点击一次按钮,页面就会显示7行数据,每点击一次按钮,前面显示的数据不会消失,也就是将页面上出现过的Id组成一个临时表,或数组,关键是这个临时表如何组成呢?
下面的CS代码可以在页面上通过创Table来随机显示7行数据(但不能做到与之前显示过的数据不重复)
CS代码:
public class A : System.Web.UI.Page
{
Button rebt1;
Button rebt;
private void Page_Load(object sender, System.EventArgs e)
{
BandText();
if(!Page.IsPostBack)
{
}
}
protected void BandText()
{
Panel3.Controls.Add(new LiteralControl("<table align='center'>"));
try
{
conn.Open();
SqlCommand cmd = new SqlCommand("select top 7 * from TableC order by newid()", conn);
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = cmd;
da.Fill(ds, "infos");
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Panel3.Controls.Add(new LiteralControl("<tr>"));
TableCell cell = new TableCell();//创建单元格,也就是第一列
cell.Text = ds.Tables[0].Rows[i]["数据列1"].ToString();//设置单元格内的内容
Panel3.Controls.Add(cell);
Panel3.Controls.Add(new LiteralControl("\n"));
Panel3.Controls.Add(new LiteralControl("<td>"));
TextBox text = new TextBox();
text.ID = "txt" + ds.Tables[0].Rows[i]["Id"].ToString();
text.Text = ds.Tables[0].Rows[i]["数据列3"].ToString();
Panel3.Controls.Add(text);
Panel3.Controls.Add(new LiteralControl("</td>"));
Panel3.Controls.Add(new LiteralControl("<td>"));
Panel3.Controls.Add(new LiteralControl("</td>"));
Panel3.Controls.Add(new LiteralControl("</tr>"));
}
Panel3.Controls.Add(new LiteralControl("<tr>"));
Panel3.Controls.Add(new LiteralControl("<td>"));
Panel3.Controls.Add(new LiteralControl("</td>"));
Panel3.Controls.Add(new LiteralControl("<td>"));
rebt1 = new Button();
rebt1.ID = "rebt1";
rebt1.Text = "保存";
rebt1.Click += new EventHandler(rebt1_Click);
Panel3.Controls.Add(rebt1);
Panel3.Controls.Add(new LiteralControl("</td>"));
Panel3.Controls.Add(new LiteralControl("</tr>"));
Panel3.Controls.Add(new LiteralControl("</table>"));
}
catch (Exception)
{
throw;
}
finally
{
conn.Close();
}
}
}
点击一次按钮,页面就会显示7行数据,每点击一次按钮,前面显示的数据不会消失,也就是将页面上出现过的Id组成一个临时表,或数组,关键是这个临时表如何组成呢?
作者: scorpio78787878 发布时间: 2011-12-11
感觉临时表不好,你在前段程序里定义一个全局datatable存放已经取出去的数据
写个存储过程
SQL code
每次调用存储过程就把全局table里的id组成一条逗号连接的字符串传给pr_name
写个存储过程
SQL code
create proc pr_name (@ids varchar(100)) as begin select top 7 * from tb where charindex(','+id+',',','+@ids+',')=0 order by newid() end exec pr_name '1,2,3,4,5,6,7'
每次调用存储过程就把全局table里的id组成一条逗号连接的字符串传给pr_name
作者: ssp2009 发布时间: 2011-12-11
引用 1 楼 ssp2009 的回复:
感觉临时表不好,你在前段程序里定义一个全局datatable存放已经取出去的数据
写个存储过程
SQL code
create proc pr_name (@ids varchar(100))
as
begin
select top 7 * from tb where charindex(','+id+',',','+@ids+',')=0 order by newid……
感觉临时表不好,你在前段程序里定义一个全局datatable存放已经取出去的数据
写个存储过程
SQL code
create proc pr_name (@ids varchar(100))
as
begin
select top 7 * from tb where charindex(','+id+',',','+@ids+',')=0 order by newid……
虽然你的这个方法挺好,但如果不用存储过程,用其他的方法可以实现吗?
作者: scorpio78787878 发布时间: 2011-12-11
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28