集思广议!ASP.NET中用表格显示数据库中数据的高效方法!优秀方法的高分!

cfgm 2003-05-13 07:42:10
在传统的ASP中,我们都习惯了这样的数据方式:

比如rs是纪录集

<table>
<%
while not rs.eof
%>
<tr>
<td><img src=good.gif><%=rs("id")%></td>
<td><%=rs("userid")%></td>
<td><%=rs("userpwd")%></td>
<td><%=rs("realname")%></td>
</td>
<%
rs.movenext
wend
%>

这样我们可以在先对表格的样式设计好后,在加入<tr>之间的循环语句,一直以来都觉得很直观!

但是在ASP.NET中,我使用过以下一些方法:

1、DataGrid

将它和数据库进行邦定后,在页面上插入:
<asp:datagrid ID="userdata" ItemStyle-Height="20" ItemStyle-BackColor="#fafafa"
PageSize="20"
PagerStyle-Visible="false"
runat="server"
Width="500"
GridLines="None"
ShowFooter="false"
CellPadding="2"
CellSpacing="1"
Font-Name="宋体"
Font-Size="8pt"
EnableViewState="false"
AutoGenerateColumns="false"
DataKeyField="id"
>
<Columns>
<asp:BoundColumn ItemStyle-Width="150px" HeaderText="" DataField="id" ></asp:BoundColumn>
<asp:BoundColumn ItemStyle-Width="150px" HeaderText="" DataField="id" ></asp:BoundColumn>
<asp:BoundColumn ItemStyle-Width="150px" HeaderText="" DataField="userid" />
<asp:BoundColumn ItemStyle-Width="150px" HeaderText="" DataField="userpwd" />
<asp:BoundColumn ItemStyle-Width="150px" HeaderText="" DataField="realname" />
</Columns>
</asp:datagrid>

首先感觉从代码长度上就比asp多了很多,难道语言的高效率是要牺牲代码空间吗?其次我如果想实现前边的:

<td><img src=good.gif><%=rs("username")%></td>

在一个记录前边加上一张图片,但是在<asp:BoundColumn ItemStyle-Width="150px" HeaderText="" DataField="userid" /> 之间不知道怎么加上图片?忘高手解答!

而且感觉如果以后对表格的整体效果要修改的话,没有使用html构架表格时候在dreamweaver mx中图形界面那么直观,很不适应这种现实数据的方法

2、DataReader

它可以像以前ASP中那样一行一行的读纪录

我在C#中把纪录付给一个数组

while(myReader.Read())
{
userinfo[i] = myReader.GetString(1);
i++;
}

然后在界面中这样的显示:

<table width="700" border="0" cellspacing="0" cellpadding="0">
<%
for (n=0; n<10; n++)
{
%><tr>
<td><%=userinfo[n]%></td>
</tr>
<%}%>
</table>

感觉还是没有ASP中那种方式好用!大家说说自己在ASP.NET编程中一些这方面的经验吧!我感觉以上没有突出ASP.NET强大的地方,希望在高手的指点下领会到ASP.NET真正强大的地方!

...全文
246 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
cfgm 2003-05-14
  • 打赏
  • 举报
回复
timmy3310(Tim)你好啊!

服务器端的Table控件你能不能给我一个简单的实例!谢谢了呵呵~
timmy3310 2003-05-14
  • 打赏
  • 举报
回复
你可以这样,在cs文件里面:

protected System.Data.SqlDataReader reader; //声明你的reader

然后,在Page的OnInit方法里面初始化这个reader,这样页面就可以用了

另外,其实ASP.Net完全可以不用这种方式,你可以使用服务器端的Table控件
cfgm 2003-05-14
  • 打赏
  • 举报
回复
up
cfgm 2003-05-13
  • 打赏
  • 举报
回复
我想是最好能有这么一款软件:能够把设计好的HTML表格转化为DataGrid控件!
cfgm 2003-05-13
  • 打赏
  • 举报
回复
AllRegistered:分开的话就回到了我主题里面的问题啊,数据邦定对于表格的样式修改我感到不太适应!
AllRegistered 2003-05-13
  • 打赏
  • 举报
回复
干吗不将CodeBehind对页面的处理与获取数据分开,这样会清晰一些
cfgm 2003-05-13
  • 打赏
  • 举报
回复
timmy3310(Tim) :谢谢!~

那么你平时习惯用什么方式输出数据库数据呢?或者什么情况下你会有相应的解决办法!


另外我通常是将C#代码放在*.cs中用aspx调用page派生类的!如果像你刚才说那样

<table>
<%
while( reader.Read() ) {
%>
<tr>
<td><img src=good.gif><%=reader["id"]%></td>
<td><%=reader["userid"]%></td>
<td><%=reader["userpwd"]%></td>
<td><%=reader["realname"]%></td>
</td>
<%
}
%>

的话,reader的声明我就应该写道类的数据成员里面了,声明为public类型!而不能写到Page_Load()中,否则就会成为了Page_Load()的局部变量而导致在aspx中不能直接访问,然后定义可以放到Page_Load()中,这样做对吗?

Cnapollo 2003-05-13
  • 打赏
  • 举报
回复
存储过程实现分页数据读取,用DataReader不用DataSet
timmy3310 2003-05-13
  • 打赏
  • 举报
回复
Sorry,while后面掉了个{
timmy3310 2003-05-13
  • 打赏
  • 举报
回复
<table>
<%
while( reader.Read() )
%>
<tr>
<td><img src=good.gif><%=reader["id"]%></td>
<td><%=reader["userid"]%></td>
<td><%=reader["userpwd"]%></td>
<td><%=reader["realname"]%></td>
</td>
<%
}
%>

这样也可以阿,跟ASP有什么差别?

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧