• asp.net中加载自用户定义控件


    1:自定义控件:是以.ascx结尾的页面文件,用户控件必须用页面加载才能显示。

    事例如下:控件内容

    <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="MyMicroUserList.ascx.cs" Inherits="Cfsns.Applications.MicroBlog.Web.MicroBlog.Include.MyMicroUserList" ViewStateMode="Disabled" %>
    <%@ Register Src="../Common/Pager.ascx" TagName="Pager" TagPrefix="uc1" %>
    <%if (false)
      { %>
    //样式和js文件使用if(false)的原因是当调试的时候可用也就是DEBUG模式下可用Release模式下不可用页面人和地方都可以这么用

    <%} %>
    <table id="divMicroBlogUserList" class="frame">
        <colgroup>
            <col class="padding_left_width" />
            <col class="logo_user" />
            <col />
            <col style=" 60px;" />
        </colgroup>
        <tbody class="alter_row_color line_height_normal">
            <asp:Repeater ID="DataList1" runat="server">
                <ItemTemplate>
                    <tr keyvalue='<%# Eval("UserId") %>'>
                        <td rowspan="3">
                        </td>
                        <td class="logo_user" rowspan="3">
                            <asp:Image runat="server" userid='<%# Eval("UserId") %>' role="popUserInfo" ImageUrl='<%# Eval("Logo") %>' AlternateText='<%# Eval("RealName") %>' />
                        </td>
                        <td>
                            <asp:HyperLink runat="server" Text='<%# Eval("RealName") %>' NavigateUrl='<%# Cfsns.Applications.MicroBlog.WebConfigs.PagePath.PFollowedList.ToReplaceQueryString("MicroBlogUserType",MicroBlogUserType).ToReplaceQueryString("UserId",Eval("UserId"))%>' CssClass="text_weight" />
                            <asp:Literal runat="server" Text='<%# Eval("Title")%>' />
                        </td>
                        <td rowspan="3">
                            <span class="icon_ListenToEachOther" title="相互关注" runat="server" visible='<%#((int)Eval("SearchFollowedType")==(int)Cfsns.Types.MicroBlogSearchTypes.FollowedAndFans) %>'></span>
                            <div class="frame">
                                <a runat="server" href="javascript:void(0)" title="取消关注" onclick='<%# Eval("UserId","microBlogContent.toggleFollowed(this,\"{0}\")") %>'>
                                    <%# (int)Eval("SearchFollowedType") >= (int)Cfsns.Types.MicroBlogSearchTypes.Followed ? "取消关注" : "关注"%></a>
                            </div>
                            <asp:HyperLink runat="server" NavigateUrl='<%# UrlRedirect.ToReplaceQueryString("UserId",Eval("UserId")).ToReplaceQueryString("OnlyUser",true)%>' Text="查看微博" />
                        </td>
                    </tr>
                    <tr keyvalue='<%# Eval("UserId") %>'>
                        <td>
                            <asp:Literal ID="Literal2" runat="server" Text='<%# Eval("CompanyName") %>' />
                        </td>
                    </tr>
                    <tr keyvalue='<%# Eval("UserId") %>'>
                        <td class="text_unimportant">
                            博文:<%# Eval("MicroBlogCount") %>| 粉丝:<%# Eval("MicroBlogFansCount") %></td>
                    </tr>
                </ItemTemplate>
            </asp:Repeater>
            <tr id="divEmpty" runat="server">
                <td class="text_empty" colspan="3">
                    没有找到任何用户
                </td>
            </tr>
        </tbody>
    </table>

    控件前台页面

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Cfsns.Interface;
    using Cfsns.Common.Tools.DataExtension;

    namespace Cfsns.Applications.MicroBlog.Web.MicroBlog.Include
    {
        public partial class MyMicroUserList : System.Web.UI.UserControl, IControlDataList
        {
            Cfsns.Types.MicroBlogSearchTypes microBlogUserType;

            public Cfsns.Types.MicroBlogSearchTypes MicroBlogUserType
            {
                get { return microBlogUserType; }
                set { microBlogUserType = value; }
            }

            protected void Page_Load(object sender, EventArgs e)
            {
                if (!IsPostBack)
                {
                    initScript();
                }
            }

            private void initScript()
            {
    #if DEBUG
                Cfsns.Common.Tools.Web.JavaScript.RegistScript(this.Page, WebConfigs.ApplicationInfo.RootControlPath + "Source/JS/PathDebug.js");
    #else
                Cfsns.Common.Tools.Web.JavaScript.RegistScript(this.Page, WebConfigs.ApplicationInfo.RootControlPath + "Source/JS/PathRelease.js");
    #endif
                Cfsns.Common.Tools.Web.JavaScript.RegistScript(this.Page, "~/Source/JS/JOperateCommon.js");
                Cfsns.Common.Tools.Web.JavaScript.RegistScript(this.Page, WebConfigs.ApplicationInfo.RootControlPath + "Source/JS/JMicroBlog.js");

            }

            #region IControlDataList 成员

            public System.Data.DataSet DataSource
            {
                set
                {
                    DataList1.DataSource = value.ToSourceTable();
                    Pager1.DataSource = value.ToPagerTable();
                    divEmpty.Visible = value.IsEmpty();
                }
            }

            private bool editMode;
            public bool EditMode
            {
                set { editMode = value; }
                get { return editMode; }
            }

            #endregion

            #region IControlDataBind 成员

            public object ControlDataBind()
            {
                DataList1.DataBind();
                Pager1.DataBind();
                return true;
            }

            #endregion

            #region IUrlRedirect 成员

            private string urlRedirect = WebConfigs.PagePath.PDefault;

            public string UrlRedirect
            {
                get { return urlRedirect; }
                set { urlRedirect = value; }
            }

            #endregion
        }
    }

    控件后台内容

    下面是加载控件的代码:

     try
                    {
                      con = Page.LoadControl(Cfsns.Applications.MicroBlog.WebConfigs.PagePath.PLoadMicroUseList);//这句话是把控件加载到内从中
                    }
                    catch (Exception ex)
                    {
                        Cfsns.Applications.Api.MasterPage.PopUpMessage(this.Page, ex.Message, true);
                        Cfsns.Bll.SiteLog.LogIt(ex, 10, null);
                        return;
                    }
                    PlaceHolder1.Controls.Add(con);//这里是把控件内容输出到页面上

    //绑定控件数据

     OperateSqlAnswer answer = Bll.MicroBlog.MicroBlogUserList(searchContent);
                IControlDataList icontrolDataList = con as IControlDataList;
                icontrolDataList.DataSource = answer.DataSource;
                icontrolDataList.UrlRedirect = WebConfigs.PagePath.PDefault.AppendCurrentQueryString("OnlyUser").AppendCurrentQueryString("UserId").ToReplaceQueryString("ScrollPostionId", "PagerToScrollId").ToReplaceQueryString("p", 2);
                icontrolDataList.DataSource = answer.DataSource;
                icontrolDataList.ControlDataBind();

  • 相关阅读:
    四种会话跟踪技术的对比
    【转载】.NET中使用Redis
    【转载】Windows平台下利用APM来做负载均衡方案
    【转载】Windows平台分布式架构实践
    MVC插件式开发平台
    如何用JS和HTML 做一个桌面炒股小插件【原创】
    如果用HTML5做一个在线视频聊天【原创】
    BraveOS正式版发布,希望大家下载使用
    短期将不再更新更多内容,见谅!
    打造自己的移动绿色版 Python 环境
  • 原文地址:https://www.cnblogs.com/Minghao_HU/p/2534175.html
Copyright © 2020-2023  润新知