在VS2005中,从数据库绑定到Label 怎么就这么难,在线散分。。。
在CS页中:
this.AccessDataSource1.SelectCommand = "select id from Table where sId='38'";
GridView1.DataSourceID = "AccessDataSource1";
GridView1.DataBind();
Page.DataBind();
在ASPX页中:
<asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>
就是无数据显示出来,论坛里的绑定Label 得帖子都试过,不行,不知在VS2005如何绑定,在线请高手指点。。。
问题点数:20、回复次数:35Top
1 楼luanwey(大陆响尾蛇)(不做温水里的青蛙王子!))回复于 2006-09-14 14:09:42 得分 0
既然无数据了。。还哪来的ID啊Top
2 楼surfpion()回复于 2006-09-14 14:14:11 得分 0
如果绑定到 GridView 就会显示一条数据,但是绑定到Label 就显示不出来!Top
3 楼surfpion()回复于 2006-09-14 14:14:57 得分 0
GridView 有 datasource 而Label 怎没有Top
4 楼juedaihuaihuai(绝代坏坏(beyond myself))回复于 2006-09-14 14:18:50 得分 0
sql语句根本没有执行,怎么会有语句呀。Top
5 楼juedaihuaihuai(绝代坏坏(beyond myself))回复于 2006-09-14 14:19:22 得分 0
sql语句根本没有执行,怎么会有数据呀。
Top
6 楼surfpion()回复于 2006-09-14 14:22:51 得分 0
VS2005中,不知怎么写执行语句,请指点!Top
7 楼surfpion()回复于 2006-09-14 14:28:21 得分 0
在VS2003中有执行语句,而在VS2005中好像没找到什么可执行的语句Top
8 楼juedaihuaihuai(绝代坏坏(beyond myself))回复于 2006-09-14 14:34:45 得分 0
session["selectedID"]="select id from Table where sId='38'";
this.AccessDataSource1.SelectCommand =Session["SelectedId"].ToStirng();
GridView1.DataSourceID = "AccessDataSource1";
GridView1.DataBind();
Page.DataBind();
Top
9 楼surfpion()回复于 2006-09-14 14:43:10 得分 0
数据没有显示出来,在在ASPX页中,要不要改点什么呢?
<asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>Top
10 楼zhangzengping(问题到此解决!)回复于 2006-09-14 14:47:14 得分 2
<asp:Label ID="Label1" runat="server" Text='<%#ViewState["名字"]%>'></asp:Label>
or <&#函数()&>
public string 函数 ()
{
get
{
return ds.table[0].row[0][0].toString();
}
}Top
11 楼juedaihuaihuai(绝代坏坏(beyond myself))回复于 2006-09-14 14:47:33 得分 0
还不行么?debug一下,看看AccessDataSource1.SelectCommand的value是不是空的。把结果贴上来。Top
12 楼surfpion()回复于 2006-09-14 14:57:32 得分 0
juedaihuaihuai(绝代坏坏) :非常感谢你的答复!显示不是空的!相同的语句<asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>,在GridView1的Label,显示了一条数据记录,在Page的Label 则什么都没有显示出来Top
13 楼kbxj406(羽儿)回复于 2006-09-14 15:01:14 得分 0
Text='<%# Eval("id") %>'
能编译成功吗???
eval函数不是需要2个参数吗??Top
14 楼kbxj406(羽儿)回复于 2006-09-14 15:03:24 得分 1
Text='<%# Eval("id") %>'
改为
Text='<%# DataBinder.Eval(Container.DataItem, "id")%>'
Top
15 楼surfpion()回复于 2006-09-14 15:07:40 得分 0
kbxj406(羽儿) : 你好!
在 VS2003 Text='<%# DataBinder.Eval(Container.DataItem, "id")%>' 这条语句是对的!
在 VS2005 Text='<%# Eval("id") %>' 这样用是对的!
Top
16 楼juedaihuaihuai(绝代坏坏(beyond myself))回复于 2006-09-14 15:10:46 得分 2
如果你只有一条数据要帮定,可以在后台这样实现
while(dr.reader())
{
lblid=dr["id"];
}
Top
17 楼surfpion()回复于 2006-09-14 15:36:46 得分 0
dr.reader 在VS2005 中完整的怎么写Top
18 楼surfpion()回复于 2006-09-14 16:09:31 得分 0
dr.reader 在VS2003我会写,但在VS2005就不知道怎么写了Top
19 楼surfpion()回复于 2006-09-14 17:29:55 得分 0
问题看似简单,立了三个主题,都无结果,请孟子和星星多的高手显身Top
20 楼odin223()回复于 2006-09-14 17:55:33 得分 0
upTop
21 楼superman_yc(心有灵犀)回复于 2006-09-14 18:00:41 得分 0
关注,我的也是这个问题...郁闷,2天了Top
22 楼surfpion()回复于 2006-09-14 18:18:18 得分 0
相同的语句
<asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label>,
在GridView1的Label,显示了一条数据记录,在Page的Label 则什么都没有显示出来,整整在线一
天了,大侠们指点一下。。
Top
23 楼hanchi8008(寒池)回复于 2006-09-14 19:24:41 得分 2
<asp:Label ID="Label1" runat="server" Text='<%# Bind("id") %>'></asp:Label>
即可Top
24 楼wcj86009(不懂就问)回复于 2006-09-14 20:01:02 得分 0
jfTop
25 楼wcj86009(不懂就问)回复于 2006-09-14 20:07:45 得分 0
顶Top
26 楼zeng_c_h(不喜欢Coding的程序员)回复于 2006-09-14 20:13:31 得分 2
麻煩一點﹐保証行。
先用SQL語句﹐查詢后把結果保存到某屬性﹐如TheID,前台用<%# this.TheID %>綁帶﹐OK﹗Top
27 楼surfpion()回复于 2006-09-14 23:55:09 得分 0
1。 Bind("id") 和Eval("id") 略有区别,用在这里还是数据显示不出来;
2。 在VS2005中,<%# this.TheID %>也不对,调试都过不去,改为<%= this.TheID %>调试过
去,但仍然内容没有显示出来
Top
28 楼net_lover(【孟子E章】)回复于 2006-09-15 00:30:31 得分 10
你这是属于典型的基本概念不了解的问题。
建议先看看基本的asp.net 2.0的知识
使用 Eval 方法
Eval 方法可计算数据绑定控件(如 GridView、DetailsView 和 FormView 控件)的模板中的后期绑定数据表达式。在运行时,Eval 方法调用 DataBinder 对象的 Eval 方法,同时引用命名容器的当前数据项。命名容器通常是包含完整记录的数据绑定控件的最小组成部分,如 GridView 控件中的一行。因此,只能对数据绑定控件的模板内的绑定使用 Eval 方法。
Eval 方法以数据字段的名称作为参数,从数据源的当前记录返回一个包含该字段值的字符串。可以提供第二个参数来指定返回字符串的格式,该参数为可选参数。字符串格式参数使用为 String 类的 Format 方法定义的语法。
你既然是要绑定 数据库中的id,而数据库的数据只是为GridView提供的,你的Label控件放在 GridView中的了吗??GridView之外没有任何与数据记录有关系的可操作的东西,当然是不能绑定的。
dr.reader 在VS2003我会写,但在VS2005就不知道怎么写了??
这个没有任何区别,不知道你2003里怎么写出来的
Bind("id") 和Eval("id") 略有区别?
区别就是双向绑定(可修改)与单向绑定的区别
在VS2005中,<%# this.TheID %>也不对,调试都过不去,改为<%= this.TheID %>调试过
去,但仍然内容没有显示出来??
显然是概念不清楚,DataBind方法是每个控件都有的,你调用一下即可
这些概念在我的书中都有明确的介绍,如果你愿意,可以买本看看。
怎么写?下面就是例子
<body>
<form id="form1" runat="server">
<asp:Label ID="Label1" runat="server" Text='<%# name%>'></asp:Label>
</form>
</body>
cs:
public partial class DataBind : System.Web.UI.Page
{
protected string name;
protected void Page_Load(object sender, EventArgs e)
{
name = "孟宪会";
Label1.DataBind();
}
}
如果你的要绑定的控件很多,可以直接使用一个
Page.DataBind();
如果有分组,可以使用分组的控件的.DataBind();
Top
29 楼bonnie168(虚拟过客.net)回复于 2006-09-15 08:51:24 得分 0
goodTop
30 楼test33(隐姓埋名)回复于 2006-09-15 09:53:57 得分 0
奥`有点不明白也`
Top
31 楼surfpion()回复于 2006-09-15 10:14:16 得分 0
老孟真是良师益友,详细的要点讲解,此题已解!不知何处可买到老孟的书,书名?准备结贴。。。Top
32 楼odin223()回复于 2006-09-15 11:45:57 得分 0
upTop
33 楼surfpion()回复于 2006-09-15 20:19:42 得分 0
下面方法也可将数据从后台传到前台:
OleDbConnection connlblMain = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + this.Server.MapPath("lib") + "\\ABC.MDB");
OleDbCommand cmdlblMain = new OleDbCommand("select id from Table where sId=38", connlblMain);
connlblMain.Open();
OleDbDataReader rdrlblMain = cmdlblMain.ExecuteReader();
while (rdrlblMain.Read())
{
Label1.Text = rdrlblMain["id"].ToString();
}
rdrlblMain.Close();
connlblMain.Close();Top
34 楼surfpion()回复于 2006-09-15 20:21:51 得分 0
用这个控件AccessDataSource1很难对数据库操作,如读记录、数据库关闭等操作。。。Top
35 楼Allen2064(炊烟草民)回复于 2006-09-15 21:04:46 得分 1
vs2005中
Text='<%# DataBinder.Eval(Container, "id")%>'
Top




