asp.net如何创建用户自定义控件
发布网友
发布时间:2022-04-27 10:18
我来回答
共4个回答
热心网友
时间:2022-04-27 11:47
1.打开VS2008-新建一个工程-选译ASP。NET服务器控件
2.自动生成一个文件,打代码拷进去,调试好程序
3.点击“生成菜单-生成XX”
4.到 工程目录\bin\Debug 找到dll文件把它拷到一个固定目录里如:DotNet_DLL里
============附带一个我重写Repeater的代码===================
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
using System.Data.OleDb;
namespace lwf_MVC.lwf_Controls
{
[DefaultProperty("pageIndex")]
[ToolboxData("<!--Repeater Begin --><{0}:Repeater ID=\"Rep_list\" runat=\"server\" EnableViewState=\"false\" DisplayPageing=\"Always\"> <ItemTemplate> </ItemTemplate> </{0}:Repeater><!--Repeater End -->")]
public class Repeater : System.Web.UI.WebControls.Repeater
{
private int _recordcount = 0;
private int _pageSize = 0;
private int _pageIndex = 1;
private string _PID = "";
private string _CssClass = "CssPage"; //输出数据流时设一个样式给它样式名为CssPage
private object _DataSourceList;
private PagedDataSource _pds = new PagedDataSource();
//public bool _DisplayPageing;
public MyEnum _DisplayPageing;
private MyEnumLanguage _Language;
//构造函数
public Repeater()
{
}
#region ____________控件属性:RecordCount、pageSize、pageIndex、PID、CssClass、DataSource1____________
[Bindable(true)]
[Category("data")]
[DefaultValue("1")]
[Localizable(true)]
[Description("记录总数")]
public int RecordCount
{
get
{
return _recordcount;
}
set
{
_recordcount = value;
}
}
[Bindable(true)]
[Category("data")]
[DefaultValue("15")]
[Localizable(true)]
[Description("单页记录数")]
public int pageSize
{
get
{
return _pageSize;
}
set
{
_pageSize = value;
}
}
[Bindable(true)]
[Category("data")]
[DefaultValue("1")]
[Localizable(true)]
[Description("当前页码")]
public int pageIndex
{
get
{
return _pageIndex;
}
set
{
_pageIndex = value;
}
}
[Bindable(true)]
[Category("data")]
[DefaultValue("")]
[Localizable(true)]
[Description("其它参数传递")]
public string PID
{
get
{
return _PID;
}
set
{
_PID = value;
}
}
[Bindable(true)]
[Category("data")]
[DefaultValue("CssPage")]
[Localizable(true)]
[Description("连接样式")]
public string CssClass
{
get
{
return _CssClass;
}
set
{
_CssClass = value;
}
}
[Bindable(true)]
[Category("data")]
[DefaultValue("")]
[Localizable(true)]
[Description("数据源,DataTable")]
public object DataSource1
{
get
{
return _pds;
}
set
{
switch (value.GetType().ToString())
{
case "System.Data.DataTable":
_recordcount = ((DataTable)value).Rows.Count;
_pds.DataSource = ((DataTable)value).DefaultView;
break;
case "System.Collections.Generic.List`1[System.Object]":
_recordcount = ((List<object>)value).Count;
_pds.DataSource = (List<object>)value;
break;
case "System.Data.SqlClient.SqlDataReader":
DataTable i_dt = Normal.ConvertDataReaderToDataTable((SqlDataReader)value);
_recordcount = i_dt.Rows.Count;
_pds.DataSource = i_dt.DefaultView;
break;
case "System.Data.SqlClient.OleDbDataReader":
DataTable i_dtOle = Normal.ConvertDataReaderToDataTable((OleDbDataReader)value);
_recordcount = i_dtOle.Rows.Count;
_pds.DataSource = i_dtOle.DefaultView;
break;
default:
_recordcount = ((DataTable)value).Rows.Count;
_pds.DataSource = ((DataTable)value).DefaultView;
break;
}
_pds.AllowPaging = true;
_pds.PageSize = _pageSize;
_pds.CurrentPageIndex = this._pageIndex - 1;
base.DataSource = _pds;
}
}
public MyEnum DisplayPageing
{
get { return _DisplayPageing; }
set { _DisplayPageing = value; }
}
public enum MyEnum
{
Always = 1,
Auto = 2,
Never = 3
}
public MyEnumLanguage Language
{
get { return _Language; }
set { _Language = value; }
}
public enum MyEnumLanguage
{
Chinese = 1,
English = 2
}
#endregion
//外部使用
public string ThePage()
{
string retStr = "";
retStr = this.ThePage(_recordcount, _pageSize, _pageIndex, _PID, _CssClass);
return retStr;
}
//分页函数,为输出显示流提供HTML代码
/// <summary>
/// 分页函数
/// </summary>
/// <param name="i_RecordCount">总记录数</param>
/// <param name="i_pageSize">每页记录数</param>
/// <param name="i_pageIndex">当前页数</param>
/// <param name="i_PID">其它参数</param>
/// <param name="i_CssClass">连接样式</param>
/// <returns>HTML代码</returns>
public string ThePage(int i_RecordCount, int i_pagesize, int i_pageIndex, string i_PID, string i_CssClass)
{
int i_Pcount = 0;
int i_StartPageNum;
int i_EndPageNum;
string i_pagerString = "";
string i_pagerString_ENG = "";
i_pagerString = i_pagerString + "<style type=\"text/css\">\n.CssPage {font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 25px;color: #333;text-decoration: none;}\na.CssPage:hover{font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 25px;color: #ff0000;text-decoration: underline;}\n</style>\n";
i_pagerString_ENG = i_pagerString_ENG + "<style type=\"text/css\">\n.CssPage {font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 25px;color: #333;text-decoration: none;}\na.CssPage:hover{font-family: Arial, Helvetica, sans-serif;font-size: 12px;line-height: 25px;color: #ff0000;text-decoration: underline;}\n</style>\n";
if (i_pagesize != 0)
{
i_Pcount = (i_RecordCount / i_pagesize);
i_Pcount = ((i_RecordCount % i_pagesize) != 0 ? i_Pcount + 1 : i_Pcount);
i_Pcount = (i_Pcount == 0 ? 1 : i_Pcount);
}
if (i_pageIndex <= 0) i_pageIndex = 1;
if (i_pageIndex > i_Pcount) i_pageIndex = i_Pcount;
i_StartPageNum = 1;
while (i_StartPageNum + 10 <= i_pageIndex)
{
i_StartPageNum = i_StartPageNum + 10;
}
i_EndPageNum = i_StartPageNum + 9;
if (i_EndPageNum > i_Pcount) i_EndPageNum = i_Pcount;
i_pagerString = i_pagerString + "<div class='" + i_CssClass + "' style='padding-left:20px;padding-right:20px'>共<b>" + i_Pcount + "</b>页 共有<b>" + i_RecordCount + "</b>记录 第<b>" + i_pageIndex + "</b>页 跳到第 [ ";
if (i_RecordCount <= Convert.ToInt32((i_pageIndex) * i_pagesize))
{
i_pagerString_ENG = i_pagerString_ENG + "<div class='" + i_CssClass + "' style='padding-left:20px;padding-right:20px;float:right'><div style='float:left;padding-right:60px'>Total " + i_RecordCount + " , " + ((i_pageIndex - 1) * i_pagesize + 1) + "-" + i_RecordCount + " of " + i_RecordCount + " Records </div><div style='float:left;padding-left:60px'>";
}
else
{
i_pagerString_ENG = i_pagerString_ENG + "<div class='" + i_CssClass + "' style='padding-left:20px;padding-right:20px;float:right'><div style='float:left;padding-right:60px'>Total " + i_RecordCount + " , " + ((i_pageIndex - 1) * i_pagesize + 1) + "-" + ((i_pageIndex) * i_pagesize) + " of " + i_RecordCount + " Records </div><div style='float:left;padding-left:60px'>";
}
if (i_pageIndex != 1)
{
//i_pagerString = i_pagerString + "<a class='" + i_CssClass + "' href='?" + i_PID + "page=1'> 首页</a> <a class='" + i_CssClass + "' href='?" + i_PID + "page=" + (i_pageIndex - 1).ToString() + "'>上一页</a>";
i_pagerString_ENG = i_pagerString_ENG + "<a class='" + i_CssClass + "' href='?" + i_PID + "page=1'> First</a> <a class='" + i_CssClass + "' href='?" + i_PID + "page=" + (i_pageIndex - 1).ToString() + "'>Prev</a> ";
}
i_pagerString_ENG = i_pagerString_ENG + " [ ";
if (i_StartPageNum > 1)
{
i_pagerString = i_pagerString + "<a class='" + i_CssClass + "' href='?" + i_PID + "page=" + (i_StartPageNum - 1).ToString() + "' title='前十页'><font face='webdings'>7</font></a>";
i_pagerString_ENG = i_pagerString_ENG + " <a class='" + i_CssClass + "' href='?" + i_PID + "page=" + (i_StartPageNum - 1).ToString() + "' title='Prev Ten'><font face='webdings'>7</font></a>";
}
for (int i_i = i_StartPageNum; i_i <= i_EndPageNum; i_i++)
{
if (i_i != i_pageIndex)
{
i_pagerString = i_pagerString + "<a class='" + i_CssClass + "' href='?" + i_PID + "page=" + i_i.ToString() + "'>" + i_i.ToString() + "</a> ";
i_pagerString_ENG = i_pagerString_ENG + "<a class='" + i_CssClass + "' href='?" + i_PID + "page=" + i_i.ToString() + "'>" + i_i.ToString() + "</a> ";
}
else
{
i_pagerString = i_pagerString + "<b><font color=red>" + i_i.ToString() + "</font></b> ";
i_pagerString_ENG = i_pagerString_ENG + "<b><font color=red>" + i_i.ToString() + "</font></b> ";
}
}
if (i_EndPageNum < i_Pcount)
{
i_pagerString = i_pagerString + "<a class='" + i_CssClass + "' href='?" + i_PID + "page=" + (i_EndPageNum + 1).ToString() + "' title='下十页'><font face='webdings'>8</font></a>";
i_pagerString_ENG = i_pagerString_ENG + "<a class='" + i_CssClass + "' href='?" + i_PID + "page=" + (i_EndPageNum + 1).ToString() + "' title='Next Ten'><font face='webdings'>8</font></a>";
}
i_pagerString = i_pagerString + "] 页";
i_pagerString_ENG = i_pagerString_ENG + "] ";
if (i_pageIndex != 1)
{
i_pagerString = i_pagerString + "<a class='" + i_CssClass + "' href='?" + i_PID + "page=1'> 首页</a> <a class='" + i_CssClass + "' href='?" + i_PID + "page=" + (i_pageIndex - 1).ToString() + "'>上一页</a>";
//i_pagerString_ENG = i_pagerString_ENG + "<a class='" + i_CssClass + "' href='?" + i_PID + "page=1'> 首页</a> <a class='" + i_CssClass + "' href='?" + i_PID + "page=" + (i_pageIndex - 1).ToString() + "'>上一页</a>";
}
if (i_Pcount != i_pageIndex)
{
i_pagerString = i_pagerString + "<a class='" + i_CssClass + "' href='?" + i_PID + "page=" + (i_pageIndex + 1).ToString() + "'> 下一页</a> <a class='" + i_CssClass + "' href='?" + i_PID + "page=" + i_Pcount + "'>尾页</a>";
i_pagerString_ENG = i_pagerString_ENG + "<a class='" + i_CssClass + "' href='?" + i_PID + "page=" + (i_pageIndex + 1).ToString() + "'> Next</a> <a class='" + i_CssClass + "' href='?" + i_PID + "page=" + i_Pcount + "'>End</a>";
}
i_pagerString = i_pagerString + "</div>";
i_pagerString_ENG = i_pagerString_ENG + "</div></div>";
if (_Language == MyEnumLanguage.English)
{
return i_pagerString_ENG;
}
else
{
return i_pagerString;
}
}
//将HTML代码加入输出流
protected override void Render(HtmlTextWriter output)
{
base.Render(output);
switch (_DisplayPageing)
{
case MyEnum.Always:
output.WriteLine(ThePage(_recordcount, _pageSize, _pageIndex, _PID, _CssClass));
break;
case MyEnum.Auto:
if (_pageSize < _recordcount)
{
output.WriteLine(ThePage(_recordcount, _pageSize, _pageIndex, _PID, _CssClass));
}
else
{
output.WriteLine("");
}
break;
case MyEnum.Never:
output.WriteLine("");
break;
}
//if (_DisplayPageing == true) output.WriteLine(ThePage(_recordcount, _pageSize, _pageIndex, _PID, _CssClass));
// output.WriteLine(ThePage(_recordcount, _pageSize, _pageIndex, _PID, _CssClass));
}
}
}
热心网友
时间:2022-04-27 13:05
右键web项目
添加新项 有个用户控件直接创建·
WebUserControl1.ascx
用户控件只是你很多页面都需要使用它 在用用户控件··
其实好比一个母版页一样·
热心网友
时间:2022-04-27 14:40
你说的是重写某个控件吧,这个有点难度!
热心网友
时间:2022-04-27 16:31
直接新建用户控件
如何在ASP.NET3.5中实现自定义服务器控件的调试和开发?
3.1 选择基类</: 了解控件开发中选择基类的重要性。3.2 控件呈现顺序</: 探索控件在页面中的布局和呈现顺序。3.3 控件渲染</3.3.1 HTMLTextWriter</: 学习使用不同方式输出HTML。3.3.2 直接输出标签</: 探索直接操作HTML标签的方法。3.3.3 RenderControl</: 理解RenderControl在控件呈现中的...
如何制作自定义用户控件
提供了一种创建和重用自定义 图形界面 的方法。用户控件本质上是具有可视化表示形式的组件。因此,它可能包含一个或多个APS.NET Web服务器控件 、组件或代码块,它们能够通过验证用户输入、修改显示属性或执行作者所需的其他任务来扩展功能。可以按照与其他控件相同的方式,将用户控件置于APS.NET Web窗体中。
设置自定义ASP.NET服务器控件TagPrefix的几种方法
每个页面也都要添加<%Register%指令,这样只是提供了统一的tagPrefix,实质上还是第二种方法方法四、在控件项目中添加属性文件"Assembly.cs"中添加如下代码来自定义控件的前缀:usingSystem.Reflection;usingSystem.Runtime.CompilerServices;usingSystem.Runtime.InteropServices;usingSystem.Web.UI;[assembly:TagPre...
如何在aspx页面中使用ascx控件(用户自定义的一个控件)?
用户自定义控件是微软ASP.NET中提供的用于实现内置 ASP.NET Web 服务器控件未提供的功能的aspx文件(.ascx),它基本上由已定义的服务器控件构成,在定义用户自定义控件后,可以通过将.ascx文件鼠标拖放进aspx页面添加和使用它.或者在aspx页面页面顶部加入以下页指令:<%@ Register TagPrefix="uc1" TagName="...
asp.net登陆注册控件怎么用?
1.好像不可以,没找到相应的代码,这东西你可以自己写的,然后用Membership创建用户 2.这种控件很方便的,而且都测试过的,重要的是基于membershipprovider,asp.net内置的很多东西都直接使用它,有轮子为什么还要自己写呢?像我们做和微软的产品交互的,他们都是用membership,你们要是也做的话,自己写特例...
ASP NET标准教程目 录
第5章 创建用户控件和自定义控件 指导如何使用用户控件和自定义控件,涉及用户控件的使用、实现站点计数器、模板化、将Web窗体页转化为用户控件以及自定义控件的使用、添加公共属性、测试和编译过程。第3篇 构建ASP.NET应用程序 第6章 ASP.NET状态对象 阐述状态管理的概念和使用Cookie、Session、Application...
用户控件的主要步骤
(1)创建一个扩展名为.ascx的文本文件。这是用户控件和ASP.NET Web页面的第一个不同点,后者使用的扩展名为.aspx。(2)在文本文件顶部添加@Control指令,并通过Language属性来设置所选择的编程语言,例如C#。这是用户控件和Web页面的第二个不同点。后者使用@Page指令而不是@Control。(3)向文本...
.什么是ASP.net中的用户控件
有时可能需要控件中具有内置 ASP.NET Web 服务器控件未提供的功能。在这种情况下,您可以创建自己的控件。有两个选择。您可以创建:用户控件。用户控件是能够在其中放置标记和 Web 服务器控件的容器。然后,可以将用户控件作为一个单元对待,为其定义属性和方法。自定义控件。自定义控件是编写的一个类,...
ASP.NET项目开发指南:界面控件设计(1)
在用户界面的每个页面上方都会有一组超链接 如图 所示 图 头控件 将其做成一个用户控件 ST_khead ascx(头控件) 其HTML代码如程序 所示 程序 ST_khead ascx |
asp.net中所有的自定义用户控件都必须继承自什么()?
WebControl:在Control的基础上提供了样式属性,例如:BorderColor等。CompositeControl:用于创建组合了多个现有控件的自定义控件。通过重写CreateChildControls()方法创建控件树。重写RenderContents()方法来控制控件的界面布局(默认的该方法,只是调用Controls集合中所有控件的RenderControl()方法)另外的,自定义...