在Repeater 的ItemDataBound 如何转换e.Item.DataItem 的类型

1、使用DataSet和DataTable绑定数据源时,用

DataRowView view = (DataRowView)e.Item.DataItem;

2、DataReader绑定数据源时,用

System.Data.Common.DbDataRecord view = (System.Data.Common.DbDataRecord)e.Item.DataItem;

3、使用泛型做数据源时,则是泛型对应的类型,例如List<AttachFile> 为数据源,则

AttachFile view = (AttachFile )e.Item.DataItem;

我为你提供订单管理的后台页面,请你重新为我生成支付页面的前后端完整代码。using System; using System.Data; using System.Data.SqlClient; using System.Web.UI; using System.Web.UI.WebControls; public partial class orders : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // 检查用户是否登录 if (Session["user_id"] == null) { Response.Redirect("login.aspx?returnUrl=orders.aspx"); return; } BindOrders(); } } private void BindOrders() { int userId = Convert.ToInt32(Session["user_id"]); // 查询用户的所有订单 string sql = @" SELECT o.order_id, o.order_date, o.total_amount, o.payment_status, o.shipping_address FROM orders o WHERE o.user_id = @user_id ORDER BY o.order_date DESC"; SqlParameter[] parameters = { new SqlParameter("@user_id", userId) }; DataTable dtOrders = GetData(sql, parameters); if (dtOrders.Rows.Count > 0) { rptOrders.DataSource = dtOrders; rptOrders.DataBind(); } else { pnlNoOrders.Visible = true; } } protected void rptOrders_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e.Item.ItemType == ListItemType.Item || e.Item.ItemType == ListItemType.AlternatingItem) { // 获取当前订单ID DataRowView row = (DataRowView)e.Item.DataItem; int orderId = Convert.ToInt32(row["order_id"]); // 查询订单明细 string sql = @" SELECT oi.quantity, oi.unit_price, e.event_id, e.title, e.show_time, e.venue, e.city, e.cover_img FROM order_items oi JOIN events e ON oi.event_id = e.event_id WHERE oi.order_id = @order_id"; SqlParameter[] parameters = { new SqlParameter("@order_id", orderId) }; DataTable dtItems = GetData(sql, parameters); // 绑定订单明细 Repeater rptOrderItems = (Repeater)e.Item.FindControl("rptOrderItems"); rptOrderItems.DataSource = dtItems; rptOrderItems.DataBind(); } } protected void btnPay_Click(object sender, EventArgs e) { Button btn = (Button)sender; int orderId = Convert.ToInt32(btn.CommandArgument); // 跳转到支付页面 Response.Redirect("pay.aspx?order_id={orderId}"); } protected void btnCancel_Click(object sender, EventArgs e) { Button btn = (Button)sender; int orderId = Convert.ToInt32(btn.CommandArgument); // 取消订单逻辑 string sql = "UPDATE orders SET payment_status = 2 WHERE order_id = @order_id"; SqlParameter[] parameters = { new SqlParameter("@order_id", orderId) }; if (ExecuteNonQuery(sql, parameters) > 0) { // 重新绑定订单列表 BindOrders(); // 显示成功消息 ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('订单已取消');", true); } } // 获取封面图片URL public string GetCoverImage(object coverImg) { if (coverImg == DBNull.Value || string.IsNullOrEmpty(coverImg.ToString())) { return ResolveUrl("~/Pic/temp.jpg"); } string imagePath = coverImg.ToString().Trim(); if (imagePath.StartsWith("~/")) { return ResolveUrl(imagePath); } if (!imagePath.StartsWith("Pic/")) { imagePath = "Pic/" + imagePath; } if (!imagePath.StartsWith("~/")) { imagePath = "~/" + imagePath; } return ResolveUrl(imagePath); } // 获取状态CSS类 public string GetStatusCssClass(int status) { switch (status) { case 1: return "status-paid"; // 已支付 case 2: return "status-canceled"; // 已取消 default: return "status-unpaid"; // 未支付 } } // 获取状态文本 public string GetStatusText(int status) { switch (status) { case 1: return "已支付"; case 2: return "已取消"; default: return "待支付"; } } // 通用数据访问方法 private DataTable GetData(string sql, SqlParameter[] parameters = null) { string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["TicketDB"].ConnectionString; using (SqlConnection conn = new SqlConnection(connStr)) { SqlCommand cmd = new SqlCommand(sql, conn); if (parameters != null) { cmd.Parameters.AddRange(parameters); } SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); da.Fill(dt); return dt; } } // 执行非查询SQL private int ExecuteNonQuery(string sql, SqlParameter[] parameters = null) { string connStr = System.Configuration.ConfigurationManager.ConnectionStrings["TicketDB"].ConnectionString; using (SqlConnection conn = new SqlConnection(connStr)) { conn.Open(); SqlCommand cmd = new SqlCommand(sql, conn); if (parameters != null) { cmd.Parameters.AddRange(parameters); } return cmd.ExecuteNonQuery(); } } }
最新发布
06-22
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值