vs2005,datalist 不固定列 绑定问题

annio 2008-09-15 04:03:26
sql查询出的结果集,列数不固定,结果集中每个列的字段名按规律编码,如c1,c2,c3,c4,,,

现要绑定到datalist,我的想法是:
计算结果集总列数,在aspx页面中构造datalist的列,如总列数为5,则datalist构造5列,后台绑定。
即:循环总列数5,在aspx页面datalist模板列中构造出如下绑定列
<%#Eval("c1")%>
<%#Eval("c2")%>
<%#Eval("c3")%>
<%#Eval("c4")%>
<%#Eval("c5")%>

现在问题是怎么构造出来?

我在datalist模板列中这样写:
行1:<% for (int i = 1; i <= 5; i++)
行2: {
行3: TextBox1.Text = "c" + i.ToString(); %>
行4: <td style="width:40px; height:20px; text-align:center;"><%# Eval(TextBox1.Text) %></td>
行5:<% } %>


行4中TextBox1.Text始终是空,按理说代码块中命令执行后TextBox1中的值已经变了

这问题困扰了2天了,只好上来求助了



...全文
131 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
annio 2008-09-15
  • 打赏
  • 举报
回复
实在没办法,我就用在后台直接构造整个html输出到页面好了
总感觉微软的数据控件并不强大,而且毛病限制也多
annio 2008-09-15
  • 打赏
  • 举报
回复
头脑已经很乱的,不好意思,我刚才已经测试过绑定字段硬写死的情况下,是可以绑定的到,但是用i来构造,出现这样的错误

行 117: %>
行 118: <td style="width:40px; height:20px; text-align:center;"> <%# Eval("find" + i.ToString()) %> </td>
行 119: <% } %>

编译器错误信息: CS0103: 当前上下文中不存在名称“i”

------------------------------------------------

整理一下思路,最终还是回到最初提问的问题,我之所以用Textbox来存i的值,就是因为i的值不在代码块<%%>中,所以用不了,只好使用TextBox先来存一下,运行不会错,但是textbox的值其实一直没有被赋值,不解是怎么回事?


lijinan2008 2008-09-15
  • 打赏
  • 举报
回复
要不就不要用DataList
直接输出到aspx里面
<table>
<%
foreach(System.Data.DataRow dr in dt.Rows)
{
response.write("<tr>");
for (int i = 1; i <= dt.Columns.Count; i++)
{
%>
<td style="width:40px; height:20px; text-align:center;"> <%=dr[i].ToString()%> </td>
<% }
}
response.write("</tr>")
%>
</table>
annio 2008-09-15
  • 打赏
  • 举报
回复
而且你说的这样写法
------------------------------------
然后在 aspx页面这样子输出
<% for (int i = 1; i <= dt.Columns.Count; i++)
{
%>
<td style="width:40px; height:20px; text-align:center;"> <%# Eval("c"+i.ToString()) %> </td>
<% } %>

绑定不到 ,因为 <%%>是在页面展示的时候执行的,也就是说页面已经加载完了,数据也已经绑定过期了。
annio 2008-09-15
  • 打赏
  • 举报
回复
你所说的在前台循环dt所有列,这就是我要的效果。

可是我结果集dt里面所有列的字段名并非都是c1,c2,c3,c4一直顺序有规律下去的,
而是类似于这样

a1,a2,a3,a4,aAll,b1,b2,b3,b4,bAll,c1,c2,c3,c4,cAll


annio 2008-09-15
  • 打赏
  • 举报
回复
谢谢5楼 lijinan2008 朋友的回复。

我数据库查询出来的结果集(类似统计)是这样的:
假设分类为4
a1,a2,a3,a4,aAll,b1,b2,b3,b4,bAll,c1,c2,c3,c4,cAll
lijinan2008 2008-09-15
  • 打赏
  • 举报
回复
前台构造列?? 不是很能理解你的意思.
annio 2008-09-15
  • 打赏
  • 举报
回复
在前台aspx页面没有办法动态构造列吗?
lijinan2008 2008-09-15
  • 打赏
  • 举报
回复
<% for (int i = 1; i <= 5; i++)
行2: {
行3: TextBox1.Text = "c" + i.ToString(); %>
行4: <td style="width:40px; height:20px; text-align:center;"> <%# Eval(TextBox1.Text) %> </td>
行5: <% } %>


奇怪,干嘛要用 TextBox1.Text呢?直接这样不行吗? 而且TextBox1.Text不能在aspx里面用的吧?
<% for (int i = 1; i <= 5; i++)
行2: {
行3: %>
行4: <td style="width:40px; height:20px; text-align:center;"> <%# Eval("c"+i.ToString()) %> </td>
行5: <% } %>

如果是不固定列的DataList绑定,我会这样做.
在aspx.cs文件声明一个
public DataTable dt=new DataTable();
在Page_Load事件里给dt赋值,然后绑定到 DataList里面.

然后在 aspx页面这样子输出
<% for (int i = 1; i <= dt.Columns.Count; i++)
{
%>
<td style="width:40px; height:20px; text-align:center;"> <%# Eval("c"+i.ToString()) %> </td>
<% } %>
annio 2008-09-15
  • 打赏
  • 举报
回复
换个思路,在后台代码页面 动态 构造 所有列?如何构造?
annio 2008-09-15
  • 打赏
  • 举报
回复
在线等,说简单点,就是不定列数(列的字段名按规律在sql中构造了,可求得)如何绑定datalist的问题
annio 2008-09-15
  • 打赏
  • 举报
回复
需要绑定的列是不固定的,要先在aspx页面中构造出来列才可以把?

楼上说的在数据绑定时候写怎么说?请教~
绝代坏坏 2008-09-15
  • 打赏
  • 举报
回复
在数据绑定时候写下就可以了呀.OnItemDataBound

62,047

社区成员

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

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

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

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