e.Item.ItemType、ListItemType.Item 的解释

本文详细解释了如何在数据绑定场景下获取列表控件中的行内容或控件,包括基本行、交替行、标题行等内容,并通过代码示例展示了如何使用ListItemType枚举来判断项类型。

在数据绑定获取行中内容或控件的时候我们经常用到这个。

看名字就知道这是什么什么的类型。呵呵~~~~

常用的有下面几种:

1:e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem 
指触发的类型为DadaList中的基本行或内容行

2:e.Item.ItemType == ListItemType.Header 
指触发的类型为DadaList中的标题行的内容

察看相关资料可以看到如下相关信息

ListItemType 枚举    [C#]请参见
System.Web.UI.WebControls 命名空间 | DataGridItem.ItemType | DataListItem.ItemType | RepeaterItem.ItemType 
要求
命名空间: System.Web.UI.WebControls

全部显示

指定列表控件中项的类型。
备注
ListItemType    枚举表示可以包含在列表控件中的不同项,例如 DataGrid、DataList 和 Repeater。典型的列表控件由包含此枚举所表示的元素的单元格组成。

成员
成员名称            说明 
AlternatingItem    交替(从零开始的偶数索引)单元格中的项。它是数据绑定的。 
EditItem     列表控件中当前处于编辑模式的项。它是数据绑定的。 
Footer     列表控件的页脚。它不是数据绑定的。 
Header     列表控件的页眉。它不是数据绑定的。 
Item    列表控件中的项。它是数据绑定的。 
Pager     页导航,显示定位到与 DataGrid 控件关联的不同页的控件。它不是数据绑定的。 
SelectedItem     列表控件中的选定项。它是数据绑定的。 
Separator    列表控件中项之间的分隔符。它不是数据绑定的。

 

(e.Item.ItemType==ListItemType.Item||e.Item.ItemType==ListItemType.AlternatingItem)
是判断项是控件内容中的项或交插项
“e.Item.ItemType == ListItemType.Header”
是判断项是不是控件的表头

另外在绑定中获取同一行相关信息下面方法会比较方便当然下面的内容是写在OnItemDataBound事件里的~~~~

DataRowView MyRow= (DataRowView)e.Item.DataItem; 
MyRow["这里是相关字段名称"]

我为你提供订单管理的后台页面,请你重新为我生成支付页面的前后端完整代码。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
using System; using System.Configuration; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Q4_WEB { public partial class Q4_MAIN : System.Web.UI.Page { // 数据库连接字符串 private string connectionString = ConfigurationManager.ConnectionStrings["EaPumpConnectionString"].ConnectionString; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // 页面首次加载时加载所有时段数据 LoadAllTimePeriods(); } } // 加载所有时段数据到Repeater控件 private void LoadAllTimePeriods() { using (SqlConnection conn = new SqlConnection(connectionString)) { string query = "SELECT dwsd, qshour, jshour FROM Eamain ORDER BY CASE dwsd WHEN '尖期' THEN 1 WHEN '峰期' THEN 2 WHEN '平期' THEN 3 WHEN '谷期' THEN 4 END, qshour"; SqlCommand cmd = new SqlCommand(query, conn); SqlDataAdapter da = new SqlDataAdapter(cmd); DataTable dt = new DataTable(); conn.Open(); da.Fill(dt); conn.Close(); // 将数据绑定到Repeater控件 rptTimePeriods.DataSource = dt; rptTimePeriods.DataBind(); } } // 在Repeater数据绑定完成后处理时间显示 protected void rptTimePeriods_ItemDataBound(object sender, RepeaterItemEventArgs e) { if (e == null) { return; } if (e.Item == null) { return; } // 只处理数据项和交替数据项 if (e.Item.ItemType != ListItemType.Item && e.Item.ItemType != ListItemType.AlternatingItem) { return; } // 获取当前绑定的数据项 DataRowView rowView = e.Item.DataItem as DataRowView; if (rowView == null) { return; } // 获取控件 Label lblItemPeriodType = e.Item.FindControl("lblItemPeriodType") as Label; Label lblItemStartTime = e.Item.FindControl("lblItemStartTime") as Label; Label lblItemEndTime = e.Item.FindControl("lblItemEndTime") as Label; // 检查控件是否存在 if (lblItemPeriodType == null || lblItemStartTime == null || lblItemEndTime == null) { return; } // 设置时段类型 string dwsd = rowView["dwsd"].ToString(); lblItemPeriodType.Text = dwsd; // 设置开始时间 string qshour = rowView["qshour"].ToString(); lblItemStartTime.Text = qshour; // 设置结束时间 string jshour = rowView["jshour"].ToString(); lblItemEndTime.Text = jshour; } // 添加时段按钮点击事件 protected void btnAddPeriod_Click(object sender, EventArgs e) { try { // 获取输入值 string periodType = ddlPeriodType.SelectedValue; string startHour = ddlStartHour.SelectedValue; string startMinute = ddlStartMinute.SelectedValue; string endHour = ddlEndHour.SelectedValue; string endMinute = ddlEndMinute.SelectedValue; // 组合时间格式 string startTime = $"{startHour}:{startMinute}"; string endTime = $"{endHour}:{endMinute}"; // 检查是否存在相同时间段 bool exists = false; using (SqlConnection conn = new SqlConnection(connectionString)) { string query = "SELECT COUNT(*) FROM Eamain WHERE dwsd = @dwsd AND qshour = @qshour AND jshour = @jshour"; SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@dwsd", periodType); cmd.Parameters.AddWithValue("@qshour", startTime); cmd.Parameters.AddWithValue("@jshour", endTime); conn.Open(); int count = (int)cmd.ExecuteScalar(); conn.Close(); exists = (count > 0); } if (exists) { // 存在相同时间段,显示提示信息 ShowMessage("已添加该时段,请检查!", false); return; } // 添加新时段 using (SqlConnection conn = new SqlConnection(connectionString)) { string query = "INSERT INTO Eamain (dwsd, qshour, jshour) VALUES (@dwsd, @qshour, @jshour)"; SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@dwsd", periodType); cmd.Parameters.AddWithValue("@qshour", startTime); cmd.Parameters.AddWithValue("@jshour", endTime); conn.Open(); int rowsAffected = cmd.ExecuteNonQuery(); conn.Close(); } // 重新加载数据 LoadAllTimePeriods(); ShowMessage("时段已成功添加!", true); } catch (Exception ex) { ShowMessage("添加失败:" + ex.Message, false); } } // 删除时段按钮点击事件 protected void btnDelete_Click(object sender, EventArgs e) { try { Button btn = (Button)sender; RepeaterItem item = (RepeaterItem)btn.NamingContainer; // 获取要删除的时段信息 Label lblItemPeriodType = (Label)item.FindControl("lblItemPeriodType"); Label lblItemStartTime = (Label)item.FindControl("lblItemStartTime"); Label lblItemEndTime = (Label)item.FindControl("lblItemEndTime"); string periodType = lblItemPeriodType.Text; string startTime = lblItemStartTime.Text; string endTime = lblItemEndTime.Text; // 删除时段 using (SqlConnection conn = new SqlConnection(connectionString)) { string query = "DELETE FROM Eamain WHERE dwsd = @dwsd AND qshour = @qshour AND jshour = @jshour"; SqlCommand cmd = new SqlCommand(query, conn); cmd.Parameters.AddWithValue("@dwsd", periodType); cmd.Parameters.AddWithValue("@qshour", startTime); cmd.Parameters.AddWithValue("@jshour", endTime); conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } // 重新加载数据 LoadAllTimePeriods(); // 构建删除成功消息 string periodTypeName = GetPeriodTypeName(periodType); ShowMessage($"已删除{periodTypeName}时段:{startTime}到{endTime}", true); } catch (Exception ex) { ShowMessage("删除失败:" + ex.Message, false); } } // 保存所有时段按钮点击事件 protected void btnSaveAll_Click(object sender, EventArgs e) { try { // 由于时段列表现在是只读显示模式,保存所有按钮不再需要执行复杂操作 // 只需显示提示信息 ShowMessage("所有时段已保存!", true); } catch (Exception ex) { ShowMessage("保存失败:" + ex.Message, false); } } // 获取时段类型中文名称 private string GetPeriodTypeName(string periodType) { switch (periodType) { case "尖期": return "尖期"; case "峰期": return "峰期"; case "平期": return "平期"; case "谷期": return "谷期"; default: return periodType; } } // 显示消息 private void ShowMessage(string message, bool isSuccess) { // 直接在客户端脚本中设置模态框内容并显示,确保消息能正确显示 string safeMessage = message.Replace("'", "\\'"); string script = $@"$(function() {{ $('#messageModal .modal-body').html('<p>{safeMessage}</p>'); $('#messageModal').modal({{ show: true, backdrop: 'static' }}); }});"; ScriptManager.RegisterStartupScript(Page, Page.GetType(), "showModal", script, true); } } }使用c#编程,为什么在删除时段信息后没有提示框
最新发布
12-09
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值