积极答复者
在Listbox或是DropDownList下拉列表框中显示多列的方法

问题
答案
-
完整的例子
Books.cs文件
using System; using System.Collections.Generic; using System.Collections; using System.Linq; using System.Web; /// <summary> /// Summary description for Books /// </summary> public class Books { public Int32 Id {get;set;} public String Name { get; set; } public String QQ { get; set; } public Books() { } public List<Books> GetBooks { get { List<Books> b = new List<Books>(); b.Add(new Books { Id = 1, Name = "aaaa", QQ = "AA" }); b.Add(new Books { Id = 2, Name = "bbbb", QQ = "BB" }); b.Add(new Books { Id = 3, Name = "cccc", QQ = "CC" }); return b; } } }
aspx内容<%@ Page Language="C#" %> <%@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI.WebControls" TagPrefix="asp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="LinqDataSource1" DataTextField="Uid" DataValueField="Uid"> </asp:DropDownList> <asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="Books" TableName="GetBooks" Select='new(Id.toString() + "--" + Name + "--" + QQ as Uid)'> </asp:LinqDataSource> </form> </body> </html>
【孟子E章】- 已标记为答案 dongtso 2009年5月31日 9:51
全部回复
-
1. 通过分隔符, 出来的结果如 Visual Studio - 开发工具2. 通过Div + GridView 或 ListView 来实现,点击控件时显示或隐藏这个 Div孟老师的网上有源码直接去下吧
知识改变命运,奋斗成就人生! -
你好:X.X.Y
我试过了,不行啊,我这个数据库中:
Name,QQ为varchar类型,id为int型
代码如下,总是不能通过:
<asp:LinqDataSource ID="LinqDataSource2" runat="server"
ContextTypeName="DAL.DataClassesDataContext" OrderBy="id"
Select="select (Name+'-'+QQ ) as tsoBB,id form Book" TableName="Book">
</asp:LinqDataSource>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="LinqDataSource2" DataTextField="tsoBB" DataValueField="id">
</asp:DropDownList>
报错说:
类型“Book”中不存在适用的方法“select”
还请指教
一切,都在意料之中! -
SQL 错了, 那个粗体的位置<asp:LinqDataSource ID="LinqDataSource2" runat="server"
ContextTypeName="DAL.DataClassesDataContext" OrderBy="id"
Select="select (Name+'-'+QQ ) as tsoBB,id form Book" TableName="Book">改为<asp:LinqDataSource ID="LinqDataSource2" runat="server"
ContextTypeName="DAL.DataClassesDataContext" OrderBy="id"
Select="select (Name+'-'+QQ ) as tsoBB,id from Book" TableName="Book">
知识改变命运,奋斗成就人生! -
对不起,仍然不能输出啊:
<asp:LinqDataSource ID="LinqDataSource2" runat="server"
ContextTypeName="DAL.DataClassesDataContext" OrderBy="id"
Select="select (Name+'-'+QQ ) as tsoBB,id from Book" TableName="Book">
</asp:LinqDataSource>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="LinqDataSource2" DataTextField="tsoBB" DataValueField="id">
</asp:DropDownList>
报错说:
类型“Book”中不存在适用的方法“select”
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。
异常详细信息: System.Web.Query.Dynamic.ParseException: 类型“Book”中不存在适用的方法“select”
可见这个select语句有问题,不能输出。
一切,都在意料之中! -
孟宪会MVP, 版主
1 小时 5 分钟以前
0 投票投票认定帖子内容有帮助
可参照模仿http://dotnet.aspx.cc/Exam/WebDropDownList.aspx
谢谢楼主的这个方法,但是,我看了 ,这个有点复杂,我想要用sql语句赋值方法来点简点的就行了。
我想试用一下:x.x.y的这种简易方法
一切,都在意料之中!- 已编辑 dongtso 2009年5月31日 6:11 补充
-
孟宪会MVP, 版主
这个方法其实很简单,就是绑定一个GridView1 小时 5 分钟以前
0 投票投票认定帖子内容有帮助
可参照模仿http://dotnet.aspx.cc/Exam/WebDropDownList.aspx
谢谢楼主的这个方法,但是,我看了 ,这个有点复杂,我想要用sql语句赋值方法来点简点的就行了。
我想试用一下:x.x.y的这种简易方法
一切,都在意料之中!
【孟子E章】 -
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="UserId3" DataValueField="TrueName"> </asp:DropDownList> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=.;Initial Catalog=jGroup2;Persist Security Info=True;User ID=sa;Password=密码" ProviderName="System.Data.SqlClient" SelectCommand="SELECT (Cast(UserId as nvarchar) + '-'+ [LoginName]) as [UserId3], [TrueName] FROM [U_User]"> </asp:SqlDataSource> </form> </body> </html>
【孟子E章】- 已编辑 孟宪会Moderator 2009年5月31日 7:50
-
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=.;Initial Catalog=jGroup2;Persist Security Info=True;User ID=sa;Password=密码" ProviderName="System.Data.SqlClient" SelectCommand="SELECT (Cast(UserId as nvarchar) + ' '+ [LoginName] + ' ' + [TrueName]) as [UserId3], [TrueName] FROM [U_User]"> </asp:SqlDataSource>
【孟子E章】- 已编辑 孟宪会Moderator 2009年5月31日 7:50
-
<%@ Page Language="C#" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <script runat="server"> </script> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="SqlDataSource1" DataTextField="UserId3" DataValueField="TrueName"> </asp:DropDownList> <asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="Data Source=.;Initial Catalog=jGroup2;Persist Security Info=True;User ID=sa;Password=密码" ProviderName="System.Data.SqlClient" SelectCommand="SELECT (Cast(UserId as nvarchar) + '-'+ [LoginName]) as [UserId3], [TrueName] FROM [U_User]"> </asp:SqlDataSource> </form> </body> </html>
【孟子E章】
谢谢孟版主,按照你的例中的sql语句,我还是不能通过,原因是:当数据源是LinqDataSource时:
语句是这样的:
<asp:LinqDataSource ID="LinqDataSource2" runat="server"
ContextTypeName="DAL.DataClassesDataContext" OrderBy="id desc"
Select="new((CAST(id as vachar(4))+'—'+Name+'—'+QQ)as tsoBB,id)" TableName="Book">
</asp:LinqDataSource>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="LinqDataSource2" DataTextField="tsoBB" DataValueField="id">
</asp:DropDownList>
但是运行时,总是提示有错误,将选择语句改成这样的: Select="new((Convert(vachar(4),id)+'—'+Name+'—'+QQ)as tsoBB,id)" TableName="Book"
也还是这句有问题,盼指教,谢谢。
其中:id 为int
Name为varchar
QQ也为varchar
一切,都在意料之中! -
请问,大家可以帮忙解答吗?
为什么,当数据源是LinqDataSource时:
这两种写法,都会报错呢?
1、 Select="new((CAST(id as vachar(4))+'—'+Name+'—'+QQ)as tsoBB,id)" TableName="Book"
2、Select="new((Convert(vachar(4),id)+'—'+Name+'—'+QQ)as tsoBB,id)" TableName="Book"
整个代码语句是这样的:
<asp:LinqDataSource ID="LinqDataSource2" runat="server"
ContextTypeName="DAL.DataClassesDataContext" OrderBy="id desc"
Select="new((CAST(id as vachar(4))+'—'+Name+'—'+QQ)as tsoBB,id)" TableName="Book">
</asp:LinqDataSource>
<asp:DropDownList ID="DropDownList1" runat="server"
DataSourceID="LinqDataSource2" DataTextField="tsoBB" DataValueField="id">
</asp:DropDownList>
但是运行时,总是提示有错误,将选择语句改成这样的: Select="new((Convert(vachar(4),id)+'—'+Name+'—'+QQ)as tsoBB,id)" TableName="Book"
也还是这句有问题,盼指教,谢谢。
其中:id 为int
Name为varchar
QQ也为varchar
一切,都在意料之中! -
完整的例子
Books.cs文件
using System; using System.Collections.Generic; using System.Collections; using System.Linq; using System.Web; /// <summary> /// Summary description for Books /// </summary> public class Books { public Int32 Id {get;set;} public String Name { get; set; } public String QQ { get; set; } public Books() { } public List<Books> GetBooks { get { List<Books> b = new List<Books>(); b.Add(new Books { Id = 1, Name = "aaaa", QQ = "AA" }); b.Add(new Books { Id = 2, Name = "bbbb", QQ = "BB" }); b.Add(new Books { Id = 3, Name = "cccc", QQ = "CC" }); return b; } } }
aspx内容<%@ Page Language="C#" %> <%@ Register Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI.WebControls" TagPrefix="asp" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <asp:DropDownList ID="DropDownList1" runat="server" DataSourceID="LinqDataSource1" DataTextField="Uid" DataValueField="Uid"> </asp:DropDownList> <asp:LinqDataSource ID="LinqDataSource1" runat="server" ContextTypeName="Books" TableName="GetBooks" Select='new(Id.toString() + "--" + Name + "--" + QQ as Uid)'> </asp:LinqDataSource> </form> </body> </html>
【孟子E章】- 已标记为答案 dongtso 2009年5月31日 9:51
-
你的语法是错误,你需要使用Linq的语法啊
Select ='new(id.toString() + " -- " + Name + "--" + QQ as Uid)'
【孟子E章】
真是太感谢,居然,在最后下班时间,版主把我救了。
谢谢,但是找到许多网上资料,都是这样的Select="new((Convert(vachar(4),id)+'—'+Name+'—'+QQ)as tsoBB,id)" TableName="Book"或是Select="new((CAST(id as vachar(4))+'—'+Name+'—'+QQ)as tsoBB,id)" TableName="Book",
不知版主的这种linq语法,在msdn哪个地方查的,太感谢了。
一切,都在意料之中!