从内容页面更新MasterPage控件
我有一个带有Label
的UpdatePanel
,我想在我的MasterPage
更新。 该活动正在我的内容页面上进行,以下是代码。
内容ASP.net代码:
<asp:SqlDataSource ID="dsPopulateTaskName" runat="server" ConnectionString="" SelectCommand="QUERY">
C#代码隐藏:
protected void ddlTaskName_onSelectIndexChanged(object sender, EventArgs e) { FilterMessages(); } public void FilterMessages() { DataTable msgTable = HttpContext.Current.Session["MessageTable"] as DataTable; string query = ""; Stack msgStack = new Stack(); if (ddlClient.SelectedIndex > 0) { query += "Client = '" + ddlClient.SelectedItem.Text + "' OR Client is NULL"; } if (ddlSite.SelectedIndex > 0 && query == "") { query += "Site = '" + ddlSite.SelectedItem.Text + "' OR Site is NULL"; } else if (ddlSite.SelectedIndex > 0) { query += " AND Site = '" + ddlSite.SelectedItem.Text + "' OR Site is NULL"; } if (ddlProvider.SelectedIndex > 0 && query == "") { query += "Provider = '" + ddlProvider.SelectedItem.Text + "' OR Provider is NULL"; } else if (ddlProvider.SelectedIndex > 0) { query += " AND Provider = '" + ddlProvider.SelectedItem.Text + "' OR Provider is NULL"; } UpdatePanel upMsg = (UpdatePanel)Master.FindControl("upMessage"); if (query != "") { DataRow[] result = msgTable.Select(query); System.Web.UI.WebControls.Label lblMsg = (System.Web.UI.WebControls.Label)Master.FindControl("lblMessage"); if (lblMsg != null) { lblMsg.Text = ""; } //lblMessage.Text = ""; foreach (DataRow row in result) { if (row["Active"].ToString() == "True") { string[] myStrings = new string[] { row["Created"].ToString().Split(' ')[0], string.IsNullOrEmpty(row["Client"].ToString()) ? null : row["Client"].ToString(), string.IsNullOrEmpty(row["Site"].ToString()) ? null : row["Site"].ToString(), row["Message"].ToString() }; string strResult = string.Join(" ", myStrings.Where(str => !string.IsNullOrEmpty(str))); msgStack.Push(strResult); } } foreach (string message in msgStack) { lblMsg.Text += message + ""; //lblMessage.Text += message + ""; } } else { PopulateMessageGV(); } if (upMsg != null) { upMsg.Update(); } //upMessage.Update(); } protected void PopulateMessageGV() { UpdatePanel upMsg = (UpdatePanel)Master.FindControl("upMessage"); System.Web.UI.WebControls.Label lblMsg = (System.Web.UI.WebControls.Label)Master.FindControl("lblMessage"); if (lblMsg != null) { lblMsg.Text = ""; } //lblMessage.Text = ""; DataTable dt = new DataTable(); dt.Columns.Add("ID", typeof(int)); dt.Columns.Add("Created", typeof(string)); dt.Columns.Add("Message", typeof(string)); dt.Columns.Add("Client", typeof(string)); dt.Columns.Add("Site", typeof(string)); dt.Columns.Add("Provider", typeof(string)); dt.Columns.Add("Active", typeof(bool)); dt.Columns.Add("CreatedBy", typeof(string)); using (var context = new ClientContext(hostWeb)) { Stack msgStack = new Stack(); var hostSite = context.Web; context.Load(hostSite, s => s.Title); context.ExecuteQuery(); ListCollection allLists = hostSite.Lists; Microsoft.SharePoint.Client.List messageList = allLists.GetByTitle("AdminMessage"); context.Load(messageList); context.ExecuteQuery(); try { var query = CamlQuery.CreateAllItemsQuery(); Microsoft.SharePoint.Client.ListItemCollection allItems = messageList.GetItems(query); context.Load(allItems); context.ExecuteQuery(); if (allItems.Count > 0) { foreach (Microsoft.SharePoint.Client.ListItem item in allItems) { DataRow dr = dt.NewRow(); dr["ID"] = item["ID"]; dr["Created"] = item["Created"]; dr["Message"] = item["Message"]; dr["Client"] = item["Client"]; dr["Site"] = item["Site"]; dr["Provider"] = item["Provider"]; dr["Active"] = item["Active"]; FieldUserValue test = (FieldUserValue)item["Author"]; dr["CreatedBy"] = test.LookupValue.ToString(); dt.Rows.Add(dr); if (item["Active"].ToString() == "True") { string[] myStrings = new string[] { item["Created"].ToString().Split(' ')[0], string.IsNullOrEmpty(dr["Client"].ToString()) ? null : item["Client"].ToString(), string.IsNullOrEmpty(dr["Site"].ToString()) ? null : item["Site"].ToString(), item["Message"].ToString() }; string result = string.Join(" ", myStrings.Where(str => !string.IsNullOrEmpty(str))); msgStack.Push(result); } } } HttpContext.Current.Session["MessageTable"] = dt; foreach (string message in msgStack) { lblMsg.Text += message + ""; //lblMessage.Text += message + ""; } if (upMsg != null) { upMsg.Update(); } //upMessage.Update(); } catch (Exception ex) { string error = ex.Message; } } }
MasterPage ASP.net代码:
当我更改DropDown选项时,虽然在那里放置断点,但主页中的UpdatePanel不会更新,表明它正被命中。
我该如何解决这个问题?
基本上,您希望从MasterPage公开Public Property 。 然后从ContentPage访问它。
主页
<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.Master.cs" Inherits="DemoWebForm.Site" %> public partial class Site : System.Web.UI.MasterPage { public string MessageLabelText { get { return MessageLabel.Text; } set { MessageLabel.Text = value; } } }
内容页
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DemoWebForm._Default" %> public partial class _Default : Page { protected void TaskNameDropDownList_SelectedIndexChanged( object sender, EventArgs e) { var master = Master as Site; if (master != null) { master.MessageLabelText = TaskNameDropDownList.SelectedValue; } } }
- asp.net中的办公自动化问题。 如果我知道如何,我可以使用开放式办公室等替代方案
- 是否可以在继续慢速服务器端工作之前返回ASP页面(例如,日志记录)
- 大型asp.net缓存存储的持久性方法的效率
- 如何在转发器控制中查找控件?
- 在自定义服务器控件asp中使用.resx && .resource文件
- ASP.NET按钮单击重定向到新页面
- DateTime.Parse将字符串转换为DateTime格式等于数据库中的DateTime字段
- ASP.NET Web API – 没有“MediaTypeFormatter”可用于读取“Int32”类型的对象
- 找不到方法:’!! 0 System.Array.Empty()’