e.Item.ItemType 的用法

本文详细介绍了 ASP.NET 中 DataList 控件的 ListItemType 枚举使用方法及如何通过 ItemDataBound 事件来区分不同的控件元素类型,如内容项、交替项和表头等。

常用的有下面几种:

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.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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值