C# 从内容页更新母版页控件

C# 从内容页更新母版页控件,c#,asp.net,updatepanel,C#,Asp.net,Updatepanel,我有一个带有标签的UpdatePanel,我想在我的母版中更新它。事件发生在我的内容页上,下面是代码 内容ASP.net代码: <%@ MasterType TypeName="OnBoarding.Pages.Site" %> <asp:DropDownList ID="ddlTaskName" CssClass="chosen-select" DataSourceID="dsPopulateTaskName" AutoPostBack="true" DataValueFie

我有一个带有
标签的
UpdatePanel
,我想在我的
母版中更新它。事件发生在我的内容页上,下面是代码

内容ASP.net代码:

<%@ MasterType TypeName="OnBoarding.Pages.Site" %>
<asp:DropDownList ID="ddlTaskName" CssClass="chosen-select" DataSourceID="dsPopulateTaskName" AutoPostBack="true" DataValueField="Task Name" runat="server" Width="100%" Font-Size="11px" AppendDataBoundItems="true" OnSelectedIndexChanged="ddlTaskName_onSelectIndexChanged">
    <asp:ListItem Text="All" Value="%"></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="dsPopulateTaskName" runat="server" ConnectionString="<%$ ConnectionStrings:gvConnString %>" SelectCommand="QUERY"></asp:SqlDataSource>
<asp:UpdatePanel runat="server" ID="upMessage" ClientIDMode="Static" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Label ID="lblMessage" Font-Size="x-small" runat="server" Text="" ClientIDMode="Static"></asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>

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 + "</br>";
                //lblMessage.Text += message + "</br>";
            }
        }
        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 + "</br>";
                //lblMessage.Text += message + "</br>";
            }

            if (upMsg != null)
            {
                upMsg.Update();
            }
            //upMessage.Update();
        }
        catch (Exception ex)
        {
            string error = ex.Message;
        }
    }
}
受保护的void ddlstaskname\u onSelectIndexChanged(对象发送方,事件参数e)
{
过滤消息();
}
公共无效筛选器消息()
{
DataTable msgTable=HttpContext.Current.Session[“MessageTable”]作为DataTable;
字符串查询=”;
堆栈msgStack=新堆栈();
如果(ddlClient.SelectedIndex>0)
{
query+=“Client='”+ddlClient.SelectedItem.Text+“'或客户端为空”;
}
如果(ddlSite.SelectedIndex>0&&query==“”)
{
查询+=“站点=”+“ddlSite.SelectedItem.Text+”,或站点为空;
}
否则如果(ddlSite.SelectedIndex>0)
{
query+=”和Site='“+ddlSite.SelectedItem.Text+'”或Site为空”;
}
如果(ddlProvider.SelectedIndex>0&&query==“”)
{
query+=“Provider='”+ddlProvider.SelectedItem.Text+“'或Provider为空”;
}
else if(ddlProvider.SelectedIndex>0)
{
查询+=”和提供程序='“+ddlProvider.SelectedItem.Text+”,或提供程序为空”;
}
UpdatePanel upMsg=(UpdatePanel)Master.FindControl(“upMessage”);
如果(查询!=“”)
{
DataRow[]result=msgTable.Select(查询);
System.Web.UI.WebControls.Label lblMsg=(System.Web.UI.WebControls.Label)Master.FindControl(“lblMessage”);
如果(lblMsg!=null)
{
lblMsg.Text=“”;
}
//lblMessage.Text=“”;
foreach(结果中的数据行)
{
if(行[“活动”].ToString()=“真”)
{
string[]myStrings=newstring[]{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(msgStack中的字符串消息)
{
lblMsg.Text+=message+“
”; //lblMessage.Text+=message+“
”; } } 其他的 { PopulateMessageGV(); } 如果(upMsg!=null) { upMsg.Update(); } //upMessage.Update(); } 受保护的void PopulateMessageGV() { UpdatePanel upMsg=(UpdatePanel)Master.FindControl(“upMessage”); System.Web.UI.WebControls.Label lblMsg=(System.Web.UI.WebControls.Label)Master.FindControl(“lblMessage”); 如果(lblMsg!=null) { lblMsg.Text=“”; } //lblMessage.Text=“”; DataTable dt=新的DataTable(); 添加(“ID”,typeof(int)); 添加(“已创建”,类型(字符串)); 添加(“消息”,类型(字符串)); 添加(“客户机”,类型(字符串)); 添加(“站点”,类型(字符串)); 添加(“提供者”,typeof(字符串)); 添加(“活动”,类型(bool)); Add(“CreatedBy”,typeof(string)); 使用(var context=newclientcontext(hostWeb)) { 堆栈msgStack=新堆栈(); var hostSite=context.Web; Load(主机站点,s=>s.Title); context.ExecuteQuery(); ListCollection allLists=hostSite.Lists; Microsoft.SharePoint.Client.List messageList=AllList.GetByTitle(“AdminMessage”); 加载(messageList); context.ExecuteQuery(); 尝试 { var query=CamlQuery.CreateAllItemsQuery(); Microsoft.SharePoint.Client.ListItemCollection allItems=messageList.GetItems(查询); 加载(allItems); context.ExecuteQuery(); 如果(allItems.Count>0) { foreach(allItems中的Microsoft.SharePoint.Client.ListItem项) { DataRow dr=dt.NewRow(); dr[“ID”]=项目[“ID”]; dr[“已创建”]=项目[“已创建”]; dr[“消息”]=项目[“消息”]; dr[“客户”]=项目[“客户”]; dr[“现场”]=项目[“现场”]; dr[“提供者”]=项目[“提供者”]; dr[“活动”]=项目[“活动”]; FieldUserValue测试=(FieldUserValue)项[“作者”]; dr[“CreatedBy”]=test.LookupValue.ToString(); dt.Rows.Add(dr); 如果(项[“活动”].ToString()=“真”) { string[]myStrings=newstring[]{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.Join(“,myStrings.Where(str=>!string.IsNullOrEmpty(str)); msgStack.Push(结果); } } } HttpContext.Current.Session[“MessageTable”]=dt; foreach(msgStack中的字符串消息) { lblMsg.Text+=message+“
”; //lblMessage.Text+=message+“
”; } 如果(upMsg!=null) { upMsg.Update(); } //upMessage.Update(); } 捕获(例外情况除外) { 字符串错误=例如消息; } } }
母版页ASP.net代码:

<%@ MasterType TypeName="OnBoarding.Pages.Site" %>
<asp:DropDownList ID="ddlTaskName" CssClass="chosen-select" DataSourceID="dsPopulateTaskName" AutoPostBack="true" DataValueField="Task Name" runat="server" Width="100%" Font-Size="11px" AppendDataBoundItems="true" OnSelectedIndexChanged="ddlTaskName_onSelectIndexChanged">
    <asp:ListItem Text="All" Value="%"></asp:ListItem>
</asp:DropDownList>
<asp:SqlDataSource ID="dsPopulateTaskName" runat="server" ConnectionString="<%$ ConnectionStrings:gvConnString %>" SelectCommand="QUERY"></asp:SqlDataSource>
<asp:UpdatePanel runat="server" ID="upMessage" ClientIDMode="Static" UpdateMode="Conditional">
    <ContentTemplate>
        <asp:Label ID="lblMessage" Font-Size="x-small" runat="server" Text="" ClientIDMode="Static"></asp:Label>
    </ContentTemplate>
</asp:UpdatePanel>