我在使用此网格视图时遇到问题。我正在用查询填充它。但是,如果我使用 while(reader.Read()) 结构,它就不会填充甚至不会出现。没有 while 结构,它工作得很好。但是,我需要访问两个特定字段。代码如下。
SqlDataReader myReader;
try
{
using (myConnection)
{
myConnection.Open();
ArrayList arrliGames = new ArrayList();
myReader = myCommand.ExecuteReader();
decimal decTicketCost = 0;
int intTicketCount = 0;
while (myReader.Read ())
{
decTicketCost = Convert .ToDecimal (myReader ["TicketCost"]);
intTicketCount =Convert .ToInt32 (myReader ["NumTickets"]);
}
//Binds listbox
grdEvents.DataSource = myReader ;
grdEvents.DataBind();
}
}
The SqlDataReader http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.aspx是只向前的。当您第一次迭代行时,其中“没有剩下任何内容”可以稍后显示。
我建议您使用阅读器在内存中填充强类型列表,然后将 GridView 绑定到该列表。例子:
var myList = new List<TicketInfo>();
while (myReader.Read())
{
myList.Add(new TicketInfo
{
TicketCost = Convert.ToDecimal(myReader["TicketCost"]),
NumTickets = Convert.ToInt32(myReader["NumTickets"])
});
}
grdEvents.DataSource = myList;
grdEvents.DataBind();
上面的代码示例假设您有一个名为TicketInfo
定义为:
class TicketInfo
{
public decimal TicketCost { get; set; }
public int NumTickets { get; set; }
}
如果您还没有使用过泛型(例如List<TicketInfo>
在例子中)之前,我建议你做一些关于这个主题的阅读 http://msdn.microsoft.com/en-us/library/512aeb7t%28v=VS.100%29.aspx.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)