实体类
[Serializable]
public class CartItemInfo
{
private string name;
/// <summary>
/// 构造方法,初始化商品的各个属性
/// </summary>
/// <param name="name">名称</param>
public CartItemInfo(string name)
{
this.name = name;
}
public string Name
{
get { return name; }
}
业务类
[Serializable]
public class Cart
{
private Dictionary<string, CartItemInfo> cartItems = new Dictionary<string, CartItemInfo>();
public ICollection<CartItemInfo> CartItems
{
get { return cartItems.Values; }
}
用户层里面的Repeater控件的数据绑定方法为
private void BindCart()
{
ICollection<CartItemInfo> cart = Cart.CartItems;
if (cart.Count > 0)
{
repShoppingCart.DataSource = cart;
repShoppingCart.DataBind();
PrintTotal();
//plhTotal.Visible = true;
}
}
现在的问题是我要在Repeater的OnItemDataBound事件中执行转换就提示CartItemInfo对象不能强制转换为“System.Data.DataRowView”
protected void repShoppingCart_OnItemDataBound(object source,RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem)
{
DataRowView rowv = (DataRowView)e.Item.DataItem
}
13 个解决方案
#1
转来干嘛??你这样转不对吧!
#2
我转了要得到name列后要格式化
#3
就想这样
protected void Products_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
Northwind.ProductsRow product =
(Northwind.ProductsRow)((System.Data.DataRowView)e.Item.DataItem).Row;
// Reference the Delete button
Button db = (Button)e.Item.FindControl("DeleteButton");
// Assign the Delete button's OnClientClick property
db.OnClientClick =
string.Format("return confirm('Are you sure that you want to delete" +
" the product {0}?');", product.ProductName.Replace("'", @"\'"));
}
}
protected void Products_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
Northwind.ProductsRow product =
(Northwind.ProductsRow)((System.Data.DataRowView)e.Item.DataItem).Row;
// Reference the Delete button
Button db = (Button)e.Item.FindControl("DeleteButton");
// Assign the Delete button's OnClientClick property
db.OnClientClick =
string.Format("return confirm('Are you sure that you want to delete" +
" the product {0}?');", product.ProductName.Replace("'", @"\'"));
}
}
#4
CartItemInfo cart = (CartItemInfo)e.Item.DataItem
cart.Name
.....
cart.Name
.....
#5
CartItemInfo cart = (CartItemInfo)e.Item.DataItem
cart.Name
.....。。。。。。。。。。。。。。。。。。。。。。。。。。。。
报错:CartItemInfo对象不能强制转换为“System.Data.DataRowView”
cart.Name
.....。。。。。。。。。。。。。。。。。。。。。。。。。。。。
报错:CartItemInfo对象不能强制转换为“System.Data.DataRowView”
#6
DataRowView rowv = (DataRowView)e.Item.DataItem;
>>>>
KeyValuePair<string, CartItemInfo> cartItem = e.Item.DataItem as KeyValuePair<string, CartItemInfo>;
// KeyValuePair<string, CartItemInfo> cartItem = (KeyValuePair<string, CartItemInfo>)e.Item.DataItem;
// string key = cartItem.Key;
// CartItemInfo cartItemInfo = cartItem.Value;
>>>>
KeyValuePair<string, CartItemInfo> cartItem = e.Item.DataItem as KeyValuePair<string, CartItemInfo>;
// KeyValuePair<string, CartItemInfo> cartItem = (KeyValuePair<string, CartItemInfo>)e.Item.DataItem;
// string key = cartItem.Key;
// CartItemInfo cartItemInfo = cartItem.Value;
#7
KeyValuePair<string, CartItemInfo> cartItem = (KeyValuePair<string, CartItemInfo>)e.Item.DataItem
指定的转换无效
指定的转换无效
#8
1.先屏蔽OnItemDataBound事件,看绑定是否正常;
2.单个值就不要泛了吧。
2.单个值就不要泛了吧。
#9
绑定的正常的
我贴的代码只是一部分,主要是用来实现购物车的
我贴的代码只是一部分,主要是用来实现购物车的
#10
采用动态绑定,绑定Field指定为CartItemInfo.Name
#11
不明白!
我这个购物车是根据petshop4.0来写的
我这个购物车是根据petshop4.0来写的
#12
自己顶把
#13
sorry, it's all my fault.
// ...
ICollection<CartItemInfo> cart = Cart.CartItems; // >>>
if (cart.Count > 0)
{
repShoppingCart.DataSource = cart; // >>> the type of the item in the datasource is CartItemInfo
// ...
So,
DataRowView rowv = (DataRowView)e.Item.DataItem
>>>
CartItemInfo cartItem = e.Item.DataItem as CartItemInfo;
if(cartItem != null) {
// ...
}
报错:CartItemInfo对象不能强制转换为“System.Data.DataRowView”
==========
Where is from your“System.Data.DataRowView”? It's CarItemInfo.
// ...
ICollection<CartItemInfo> cart = Cart.CartItems; // >>>
if (cart.Count > 0)
{
repShoppingCart.DataSource = cart; // >>> the type of the item in the datasource is CartItemInfo
// ...
So,
DataRowView rowv = (DataRowView)e.Item.DataItem
>>>
CartItemInfo cartItem = e.Item.DataItem as CartItemInfo;
if(cartItem != null) {
// ...
}
报错:CartItemInfo对象不能强制转换为“System.Data.DataRowView”
==========
Where is from your“System.Data.DataRowView”? It's CarItemInfo.
#1
转来干嘛??你这样转不对吧!
#2
我转了要得到name列后要格式化
#3
就想这样
protected void Products_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
Northwind.ProductsRow product =
(Northwind.ProductsRow)((System.Data.DataRowView)e.Item.DataItem).Row;
// Reference the Delete button
Button db = (Button)e.Item.FindControl("DeleteButton");
// Assign the Delete button's OnClientClick property
db.OnClientClick =
string.Format("return confirm('Are you sure that you want to delete" +
" the product {0}?');", product.ProductName.Replace("'", @"\'"));
}
}
protected void Products_ItemDataBound(object sender, DataListItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.Item ||
e.Item.ItemType == ListItemType.AlternatingItem)
{
Northwind.ProductsRow product =
(Northwind.ProductsRow)((System.Data.DataRowView)e.Item.DataItem).Row;
// Reference the Delete button
Button db = (Button)e.Item.FindControl("DeleteButton");
// Assign the Delete button's OnClientClick property
db.OnClientClick =
string.Format("return confirm('Are you sure that you want to delete" +
" the product {0}?');", product.ProductName.Replace("'", @"\'"));
}
}
#4
CartItemInfo cart = (CartItemInfo)e.Item.DataItem
cart.Name
.....
cart.Name
.....
#5
CartItemInfo cart = (CartItemInfo)e.Item.DataItem
cart.Name
.....。。。。。。。。。。。。。。。。。。。。。。。。。。。。
报错:CartItemInfo对象不能强制转换为“System.Data.DataRowView”
cart.Name
.....。。。。。。。。。。。。。。。。。。。。。。。。。。。。
报错:CartItemInfo对象不能强制转换为“System.Data.DataRowView”
#6
DataRowView rowv = (DataRowView)e.Item.DataItem;
>>>>
KeyValuePair<string, CartItemInfo> cartItem = e.Item.DataItem as KeyValuePair<string, CartItemInfo>;
// KeyValuePair<string, CartItemInfo> cartItem = (KeyValuePair<string, CartItemInfo>)e.Item.DataItem;
// string key = cartItem.Key;
// CartItemInfo cartItemInfo = cartItem.Value;
>>>>
KeyValuePair<string, CartItemInfo> cartItem = e.Item.DataItem as KeyValuePair<string, CartItemInfo>;
// KeyValuePair<string, CartItemInfo> cartItem = (KeyValuePair<string, CartItemInfo>)e.Item.DataItem;
// string key = cartItem.Key;
// CartItemInfo cartItemInfo = cartItem.Value;
#7
KeyValuePair<string, CartItemInfo> cartItem = (KeyValuePair<string, CartItemInfo>)e.Item.DataItem
指定的转换无效
指定的转换无效
#8
1.先屏蔽OnItemDataBound事件,看绑定是否正常;
2.单个值就不要泛了吧。
2.单个值就不要泛了吧。
#9
绑定的正常的
我贴的代码只是一部分,主要是用来实现购物车的
我贴的代码只是一部分,主要是用来实现购物车的
#10
采用动态绑定,绑定Field指定为CartItemInfo.Name
#11
不明白!
我这个购物车是根据petshop4.0来写的
我这个购物车是根据petshop4.0来写的
#12
自己顶把
#13
sorry, it's all my fault.
// ...
ICollection<CartItemInfo> cart = Cart.CartItems; // >>>
if (cart.Count > 0)
{
repShoppingCart.DataSource = cart; // >>> the type of the item in the datasource is CartItemInfo
// ...
So,
DataRowView rowv = (DataRowView)e.Item.DataItem
>>>
CartItemInfo cartItem = e.Item.DataItem as CartItemInfo;
if(cartItem != null) {
// ...
}
报错:CartItemInfo对象不能强制转换为“System.Data.DataRowView”
==========
Where is from your“System.Data.DataRowView”? It's CarItemInfo.
// ...
ICollection<CartItemInfo> cart = Cart.CartItems; // >>>
if (cart.Count > 0)
{
repShoppingCart.DataSource = cart; // >>> the type of the item in the datasource is CartItemInfo
// ...
So,
DataRowView rowv = (DataRowView)e.Item.DataItem
>>>
CartItemInfo cartItem = e.Item.DataItem as CartItemInfo;
if(cartItem != null) {
// ...
}
报错:CartItemInfo对象不能强制转换为“System.Data.DataRowView”
==========
Where is from your“System.Data.DataRowView”? It's CarItemInfo.