问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

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 选择基类&lt;/: 了解控件开发中选择基类的重要性。3.2 控件呈现顺序&lt;/: 探索控件在页面中的布局和呈现顺序。3.3 控件渲染&lt;/3.3.1 HTMLTextWriter&lt;/: 学习使用不同方式输出HTML。3.3.2 直接输出标签&lt;/: 探索直接操作HTML标签的方法。3.3.3 RenderControl&lt;/: 理解RenderControl在控件呈现中的...

如何制作自定义用户控件

提供了一种创建和重用自定义 图形界面 的方法。用户控件本质上是具有可视化表示形式的组件。因此,它可能包含一个或多个APS.NET Web服务器控件 、组件或代码块,它们能够通过验证用户输入、修改显示属性或执行作者所需的其他任务来扩展功能。可以按照与其他控件相同的方式,将用户控件置于APS.NET Web窗体中。

设置自定义ASP.NET服务器控件TagPrefix的几种方法

每个页面也都要添加&lt;%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页面页面顶部加入以下页指令:&lt;%@ 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()方法)另外的,自定义...

asp创建sheet m.newasp.net asp.net web api asp和aspnet的区别 怎么创建asp文件 asp.net core asp创建cookie 网页创建asp asp怎么创建数据库
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
当孩子面对挑战时,我们如何鼓励他们积极面对? 如何帮助孩子走出挫折 当孩子遇到困难时应该怎么引导? 如何帮助孩子克服学习上的困难和挑战? 孩子遇到挫败感时,家长应该如何鼓励孩子? 怎么提升孩子在成长过程中应对困难的能力? 天津市老年人优待证 四个超级有效的男性强根壮阳之术 星期天早上问候语 炒饭烩饭128道 内容提要 《巴黎气候协定》,川普究竟是一个什么样的人 特朗普警告伊朗说了什么? 任何一个人都有弱点,那么特朗普的弱点是什么呢? 如何看待特朗普反击奥巴马夫人这件事呢? 美国大选特朗普为什么会有那么多拥趸 环保组织将美国总统特朗普刻成冰雕目的是什么? 小特朗普做鬼脸嘲讽奥巴马网友怎么评论? 什么气体是导致地球温室效应最主要的原因 我花呗额度提升,之前总额度500块,那下个月还款就在花呗里直接扣吗? 1到100用英文怎么说? asp.net动态加载自定义控件内容 梦见今天是腊月三十家里还有好多事情都没做? 怎么能调出来110的报警记录 梦见自己还有200多天是什么原因 当事人可以调取报警记录吗 报警人可以调取出警记录吗 asp.net自定义控件, 本人..想到老婆去抚顺皇家极地海洋世界,不想跟团去,请大家给我个自己去那怎么玩的路线?谢谢 我是烟台的,打算花2天时间去蓬莱旅游,主要是极地海洋世界,请好心人指导下怎么安排时间比较合适,谢谢 有什么办法可以阻止第三方软件修改IE主页啊 ? 川普不和默克尔握手尴尬吗? 江西省上饶市玉山县农村低保在线查询? 江西省玉山县城街道上的停车位收费合法吗?可以拒交吗? 深圳国际作价148.17亿元收购苏宁易购23%股份,苏宁易购有多值钱? asp.net中自定义控件的问题 excel中 =INDEX($F1:$L10,RANDBETWEEN(1,10),RANDBETWEEN(1,7)) asp.net 怎么给自定义控件添加事件? “故不我若也,吾又何能为哉?”的翻译是什么? 翻译“故不我若也,吾又何能为哉?” 岁月爱之其实害之虽曰忧之其实仇之故不我若也吾又何能为哉 摇其本以观疏密的翻译 柳宗元的诗句,要译文!! 故不我若也句式 asp.net 自定义控件的事件如何触发 珍贵的照片在手机上面被误删了该怎么恢复? 新浪有借里面怎么还不了款呢 新浪有借现在还放款吗 武夷学院教师待遇 师兄说武夷学院的辅导员只有一千多块钱?是不是真的? 武夷学院图书馆教辅工资待遇及发展前景