您的位置:首页 > 其它

自定义服务器控件ViewSuo的源文件

2005-03-19 21:57 471 查看

自定义服务器控件ViewSuo的源文件
[/b]

using System;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.ComponentModel;

using System.Collections;

using System.Diagnostics;

using System.Data;

using System.Drawing;

namespace oa.cls

{

/// <summary>

/// 查看事务所详细信息的自定义服务器控件

/// </summary>

[ToolboxData("<{0}:ViewSuo runat=server></{0}:ViewSuo>")]

public class ViewSuo : System.Web.UI.WebControls.WebControl, INamingContainer

{

private DataSet dataSource;

/// <summary>

/// 设置数据源

/// </summary>

[Bindable(true),

Category("Data"),

DefaultValue(null),

Description("设置数据源"),

DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)

]

public DataSet DataSource

{

get

{

return dataSource;

}

set

{

dataSource = value;

}

}

protected override void Render(HtmlTextWriter output)

{

PrepareControlHierarchy();

RenderContents(output);

}

private void PrepareControlHierarchy()

{

if (HasControls() == false)

return;

}

protected override void CreateChildControls()

{

Controls.Clear();

if (Page.IsPostBack)

CreateControlHierarchy(false);

}

public override void DataBind()

{

base.OnDataBinding(EventArgs.Empty);

Controls.Clear();

ClearChildViewState();

CreateControlHierarchy(true);

ChildControlsCreated = true;

}

protected override void TrackViewState()

{

base.TrackViewState();

}

/// <summary>

/// 这里是主要实现输出的方法,用DataList来完成输出,模板SuoTemplate是详细实现细节.

/// 其它部分都可以套用,自定义的属性都在这里设置,比如说DataList显示的列数,宽,高等.

/// </summary>

/// <param name="useDataSource"></param>

private void CreateControlHierarchy( bool useDataSource )

{

DataList dl = new DataList();

dl.RepeatColumns = 1;

dl.RepeatDirection = RepeatDirection.Vertical;

dl.ID = "productList";

dl.ItemTemplate = new SuoTemplate();

dl.ItemStyle.Width = new Unit(500, UnitType.Pixel);

dl.Width = new Unit(650, UnitType.Pixel);

Controls.Add( dl );

if (useDataSource == true )

{

dl.DataSource = dataSource.Tables[0];

dl.DataBind();

}

}

}

}

[/b]

ViewSuo[/b]控件中用到的SuoTemplate模板的源文件
[/b]

using System;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.ComponentModel;

using System.Collections;

using System.Diagnostics;

using System.Data;

using System.Drawing;

using System.Text;

namespace oa.cls

{

public class SuoTemplate : ITemplate

{

public SuoTemplate() { }

public void InstantiateIn( Control container )

{

Literal l = new Literal();

l.DataBinding += new EventHandler(this.BindData);

container.Controls.Add( l );

}

/// <summary>

/// 在这个方法里控制模板的主要输出,其中用到了数据绑定的一些内容

/// 要改变显示在这里修改

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

public void BindData( object sender, EventArgs e)

{

Literal l = (Literal)sender;

DataListItem container = (DataListItem)l.NamingContainer;

DataRowView currentRowView = (DataRowView) container.DataItem;

//HttpContext ht = HttpContext.Current;

StringBuilder sb = new StringBuilder();

sb.Append("<table width=/"100%/" border=/"0/" align=/"center/">");

sb.Append(" <tr>");

sb.Append(" <td width=/"17%/" align=/"right/"><strong>事务所名称:</strong></td>");

sb.Append(" <td width=/"26%/">"+currentRowView["name"]+"</td>");

sb.Append(" <td width=/"19%/" align=/"right/"><strong>主任:</strong></td>");

sb.Append(" <td width=/"38%/">"+currentRowView["zhuren"]+"</td>");

sb.Append(" </tr>");

sb.Append(" <tr>");

sb.Append(" <td align=/"right/"><strong>许可证号:</strong></td>");

sb.Append(" <td>"+currentRowView["zhiye"]+"</td>");

sb.Append(" <td align=/"right/"><strong>编    制:</strong></td>");

sb.Append(" <td>"+currentRowView["bianzhi"]+"</td>");

sb.Append(" </tr>");

sb.Append(" <tr>");

sb.Append(" <td align=/"right/"><strong>组织形式:</strong></td>");

sb.Append(" <td>"+currentRowView["zuzhi"]+"</td>");

sb.Append(" <td align=/"right/"><strong>隶属关系:</strong></td>");

sb.Append(" <td>"+currentRowView["lishu"]+"</td>");

sb.Append(" </tr>");

sb.Append(" <tr>");

sb.Append(" <td align=/"right/"><strong>主管机关:</strong></td>");

sb.Append(" <td>"+currentRowView["zhuguan"]+"</td>");

sb.Append(" <td align=/"right/"><strong>年    检:</strong></td>");

sb.Append(" <td>"+currentRowView["nianshen"]+"</td>");

sb.Append(" </tr>");

sb.Append("</table>");

sb.Append("<table width=/"100%/" border=/"0/" align=/"center/">");

sb.Append(" <tr>");

sb.Append(" <td width=/"17%/" align=/"right/"><strong>设立时间:</strong></td>");

sb.Append(" <td width=/"26%/">"+currentRowView["sheli"]+"</td>");

sb.Append(" <td width=/"19%/" align=/"right/"><strong>区    域:</strong></td>");

sb.Append(" <td width=/"38%/">"+currentRowView["quyu"]+"</td>");

sb.Append(" </tr>");

sb.Append(" <tr>");

sb.Append(" <td height=/"16/" align=/"right/"><strong>律    师:</strong></td>");

sb.Append(" <td>"+currentRowView["lvshi"]+"</td>");

sb.Append(" <td align=/"right/"><strong>电    话:</strong></td>");

sb.Append(" <td>"+currentRowView["phone"]+"</td>");

sb.Append(" </tr>");

sb.Append(" <tr>");

sb.Append(" <td align=/"right/"><strong>律师助理:</strong></td>");

sb.Append(" <td> </td>");

sb.Append(" <td align=/"right/"><strong>传    真:</strong></td>");

sb.Append(" <td>"+currentRowView["zhuli"]+"</td>");

sb.Append(" </tr>");

sb.Append(" <tr>");

sb.Append(" <td align=/"right/"><strong>行政人员:</strong></td>");

sb.Append(" <td>"+currentRowView["xingzheng"]+"</td>");

sb.Append(" <td align=/"right/"><strong>网    址:</strong></td>");

sb.Append(" <td>"+currentRowView["huji"]+"</td>");

sb.Append(" </tr>");

sb.Append(" <tr>");

sb.Append(" <td align=/"right/"><strong>专业资格:</strong></td>");

sb.Append(" <td>"+currentRowView["zige"]+"</td>");

sb.Append(" <td align=/"right/"><strong>主任手机:</strong></td>");

sb.Append(" <td>"+currentRowView["shouji"]+"</td>");

sb.Append(" </tr>");

sb.Append(" <tr>");

sb.Append(" <td align=/"right/"><strong>固定资产:</strong></td>");

sb.Append(" <td>"+currentRowView["zichan"]+"</td>");

sb.Append(" <td align=/"right/"><strong>邮    编:</strong></td>");

sb.Append(" <td>"+currentRowView["zip"]+"</td>");

sb.Append(" </tr>");

sb.Append(" <tr>");

sb.Append(" <td align=/"right/"><strong>经    费:</strong></td>");

sb.Append(" <td>"+currentRowView["jingfei"]+"</td>");

sb.Append(" <td align=/"right/"><strong>地    址:</strong></td>");

sb.Append(" <td>"+currentRowView["dizhi"]+"</td>");

sb.Append(" </tr>");

sb.Append(" <tr>");

sb.Append(" <td align=/"right/"><strong>分所情况:</strong></td>");

sb.Append(" <td colspan=/"3/">"+currentRowView["fensuo"]+"</td>");

sb.Append(" </tr>");

sb.Append("</table>");

l.Text = sb.ToString();

}

}

}

测试自定义控件的前台页代码[/b]
[/b]

<%@ Page language="c#" Codebehind="0.aspx.cs" AutoEventWireup="false" Inherits="oa._0" %>

<%@ Register TagPrefix="wawa" Namespace="oa.cls" Assembly="oa"%>

<!--在使用自定义控件前需要先用Register关键字注册,Assembly属性设置应用程序的名字就可以,就是BIN目录下的那个主DLL的名字->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>

<HEAD>

<title>0</title>

<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">

<meta name="CODE_LANGUAGE" Content="C#">

<meta name="vs_defaultClientScript" content="JavaScript">

<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

</HEAD>

<body MS_POSITIONING="FlowLayout">

<form id="Form1" method="post" runat="server">

<!--在这里放置一个自定义控件-->

<wawa:ViewSuo id="suo1" runat="server" />

</form>

</body>

</HTML>

页面后台代码
[/b]

using System;

using System.Collections;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Web;

using System.Web.SessionState;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.HtmlControls;

namespace oa

{

public class _0 : System.Web.UI.Page

{

protected oa.cls.ViewSuo suo1;

private void Page_Load(object sender, System.EventArgs e)

{

if(!this.IsPostBack)

{

//为自定义web控件设置数据源并绑定数据

suo1.DataSource=oa.cls.globalstate.GetDataSetByStr("select top 1 * from suo",null);

suo1.DataBind();

}

}

#region Web 窗体设计器生成的代码

override protected void OnInit(EventArgs e)

{

InitializeComponent();

base.OnInit(e);

}

private void InitializeComponent()

{

this.Load += new System.EventHandler(this.Page_Load);

}

#endregion

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: