Com*_*umb 1 c# asp.net data-binding class
我有SqlDataReader一个页面的代码(实际上是一个Web用户控件).我想将此代码移动到用户控件调用的单独类中.但是如何将类中的数据绑定到页面转发器?
这是一个可接受的概念吗?
这是我的代码移到了一个类:
public class ShoppingCart
{
public ShoppingCart(int ShoppingCartHeadID)
{
SqlConnection conn;
SqlCommand comm;
SqlDataReader reader;
conn = new SqlConnection(iceConns.iconn);
comm = new SqlCommand("Ordering.sl_ShoppingCartContents", conn);
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.Add(new SqlParameter("@shoppingCartHeadID", SqlDbType.Int));
comm.Parameters["@shoppingCartHeadID"].Value = ShoppingCartHeadID;
try
{
conn.Open();
reader = comm.ExecuteReader();
Cart.DataSource = reader; //This ain't gonna work!
if (reader.HasRows)
{
Cart.DataBind(); //This ain't gonna work!
varCartStatus = true;
}
reader.Close();
}
catch
{
//Error trapping
}
finally
{
conn.Close();
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
您应该为返回的数据创建一个实体对象.然后,您可以将任何控件绑定到您创建的对象的List.
使用映射到数据库表的属性创建Cart对象.然后创建一个类似CartRepository的类,它将有一个名为GetCartById(CartId)的方法.这个方法将完成上面的工作,但不是试图在这里绑定任何东西,你只需要填充你的Cart对象.返回这些对象的列表,您可以将该列表绑定到任何控件.
public class Cart
{
//Properties from cart - Just using name as an example.
public string name { get; set; }
}
public class CartRepository
{
public List<Cart> GetById(int cartId)
{
List<Cart> carts = new List<Cart>();
// Do all sql work including setting up connection, command, ect.
while(reader.read())
{
// Map your reader to your cart object.
Cart c = new Cart();
c.name = reader["name"].ToString();
carts.add(c);
}
return carts;
}
}
Run Code Online (Sandbox Code Playgroud)
现在从您的代码中将控件绑定到从存储库对象返回的List.
myControl1.DataSource = CartRepository.GetById(cartId);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7221 次 |
| 最近记录: |