如何使用ilist绑定repeater?
我第一次使用ilist,
直接赋值,前台提示未找到title数据,我知道是因为没有创建相关列,但是如果要在其他地方创建好相应的dataview或者dataset在赋值给ilist接口的话,是不是还不如直接绑定dataset?
if (Dr.Read())
{
list.Add(new ListItem(Dr["title"].ToString(), Dr["title"].ToString()));
list.Add(new ListItem(Dr["Introduction"].ToString(),Dr["Introduction"].ToString()));
}请教下大家,我该怎么处理?还有一般大家用ilist绑定数据集怎么做的?
我第一次使用ilist,
直接赋值,前台提示未找到title数据,我知道是因为没有创建相关列,但是如果要在其他地方创建好相应的dataview或者dataset在赋值给ilist接口的话,是不是还不如直接绑定dataset?
if (Dr.Read())
{
list.Add(new ListItem(Dr["title"].ToString(), Dr["title"].ToString()));
list.Add(new ListItem(Dr["Introduction"].ToString(),Dr["Introduction"].ToString()));
}请教下大家,我该怎么处理?还有一般大家用ilist绑定数据集怎么做的?
解决方案 »
- asp.net mvc 验证数据格式问题
- 初始化页面的时候输出1,每刷新一次,页面输出加1
- vb和c#区别大么 学哪个较容易 有必要都学么?
- 如何从数据库读取图像并让浏览器缓存他?
- 请帮看看下面的ASP.NET数据保存程序为什么不能执行?
- 关于表单提交
- page_load事件与普通控件事情触发的顺序如何?
- 我用Visual Web Developer 2005 Express Edition,如何发布网站?为何Bin文夹是空的?没法Release?
- 存储过程中为什么总是在报“将截断字符串或二进制数据”错误
- 哪里有免费的asp.net(c#)书下载?
- 获取服务端控件的值
- 如何实现B/S调用c/s程序?
{
list.Add(Dr["title"].ToString());
list.Add(Dr["Introduction"].ToString());
} 这样应该可以
这样同样也是会报repeater无title字段的,
我是这样定义的
private static IList<String> GetDataSetParam()
是不是在private static IList <String> GetDataSetParam()写个什么?
{
list.Add( new { Title=Dr["title"].ToString() } );
list.Add( new { Title=Dr["Introduction"].ToString() } );
}
private static IList<string> GetDataSetParam()
{
string ConnectionString = ConfigurationManager.ConnectionStrings["Post_Detail"].ConnectionString;
SqlConnection Connection = new SqlConnection(ConnectionString);
SqlCommand cmd=new SqlCommand("Post_Detail",Connection);
cmd.CommandType=CommandType.StoredProcedure; Connection.Open();
SqlDataReader Dr = cmd.ExecuteReader();
IList<string> list = new List<string>();
if (Dr.Read())
{
list.Add(new { title = Dr["title"].ToString() });
list.Add(new { Introduction = Dr["Introduction"].ToString() }); }
//adapter.Fill(ilst);
Connection.Close();
return list;
}
list.Add(new { Introduction = Dr["Introduction"].ToString() });
这里报错Error 1 The best overloaded method match for 'System.Collections.Generic.ICollection<string>.Add(string)' has some invalid arguments
Error 2 Argument '1': cannot convert from 'AnonymousType#1' to 'string'
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;public partial class TT : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
IList list = new ArrayList();
list.Add(new ListItem("a", "001"));
list.Add(new ListItem("b", "002"));
list.Add(new ListItem("c", "003"));
MyRepeater.DataSource = list;
MyRepeater.DataBind();
}
}
}
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="TT.aspx.cs" Inherits="TT" %><!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">
<div>
<table><tr>
<asp:Repeater ID="MyRepeater" runat ="server">
<ItemTemplate>
</tr><td><%#((ListItem)Container.DataItem).Text %></td>
<td><%#((ListItem)Container.DataItem).Value %></td> <tr>
</ItemTemplate>
</asp:Repeater>
</tr></table>
</div>
</form>
</body>
</html>
list.Add( Dr["title"].ToString() );
list.Add( Dr["Introduction"].ToString() );
}
昨天回家测试了一下居然行了。
回到公司又是同一个问题。
我尝试直接用SQL语句通过DataTable绑定是对的。我不知道是不是DataGrid的绑定数据源不支持这种泛型啊?
这一类型的模板绑定,所以还想继续求教
private static IList <string> GetDataSetParam()
{
string ConnectionString = ConfigurationManager.ConnectionStrings["Post_Detail"].ConnectionString;
SqlConnection Connection = new SqlConnection(ConnectionString);
SqlCommand cmd=new SqlCommand("Post_Detail",Connection);
cmd.CommandType=CommandType.StoredProcedure; Connection.Open();
SqlDataReader Dr = cmd.ExecuteReader();
IList list = new ArrayList();
while (Dr.Read())
{
list.Add(new { title = Dr["title"].ToString(),Introduction = Dr["Introduction"].ToString() });
}
//adapter.Fill(ilst);
Connection.Close();
return list;
}
前台绑定:
<%# Eval("title") %>
<%# Eval("Introduction") %>
}
因为这句话决定了,列表里装的是对象,而非一个字符串
public static IList<GradeEntity> GetClassName()
{
IList<GradeEntity> className = new List<GradeEntity>();
using (IDataReader dr = provider.GetReaderBySp("GetClass"))
{
while (dr.Read())
{
GradeEntity grade = new GradeEntity();
grade.GradeId =int.Parse( dr["Class_Id"].ToString());
grade.Gradename = dr["Class_Name"].ToString();
grade.Gradeorder = dr["Class_Order"].ToString();
className.Add(grade);
}
}
return className;
}
#endregion
#region 返回实体类年级表
public static IList<GradeEntity> GetClassName()
{
IList<GradeEntity> className = new List<GradeEntity>();
using (IDataReader dr = provider.GetReaderBySp("GetClass"))
{
while (dr.Read())
{
GradeEntity grade = new GradeEntity();
grade.GradeId =int.Parse( dr["Class_Id"].ToString());
grade.Gradename = dr["Class_Name"].ToString();
grade.Gradeorder = dr["Class_Order"].ToString();
className.Add(grade);
}
}
return className;
}
#endregion
测试通过了,太感谢了我还想再问一句,如果 private static IList <string> GetDataSetParam()和private static IList GetDataSetParam()2个返回的结果 是不是 IList <string>返回的必须是值是string的? IList返回的是匿名的,也就什么的可以接受的?
Repeater.DataSource=list;
Repeater.DataBind();
用IList绑定到Repeater或GridView之类的,
要在前台转换成相应的类型进行处理,而不能简单的用Eval来处理
因为ListItem确实没有Title这个属性但是如果绑定的是ListItem,你可以用Eval("Value")这种写法