请问在自定义weg控件中怎样引用调用它的网页的DataTable(已有数据),并且把字段内容显示出来???

ahking 2003-07-09 06:07:10
请问在自定义weg控件中怎样引用调用它的网页的DataTable(已有数据),并且把字段内容显示出来???
...全文
42 27 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
webdiyer 2003-07-15
  • 打赏
  • 举报
回复
你是要aspx页上写的,那不叫后台叫前台,而且写在aspx页上的ken_plan_tb不是DataTable而是字符串,应该这样用:
MyUserControl ctl=(MyUserControl)Page.LoadControl("myusercontrol.ascx");
DataTable table=new DataTable();
//填充DataTable
ctl.DtbName=table;
this.Controls.Add(ctl);
ahking 2003-07-15
  • 打赏
  • 举报
回复
我不在设计环境中给表赋值,而在后台代码中:
<cc1:tbpage1 id="Tbpage11" runat="server" Columnum="3" Rownum="6" Dtbname=ken_plan_tb></cc1:tbpage1>,结果出错,怎么回事?
.cs中:
protected DataTable ken_plan_tb = new DataTable();
private void Page_Load(object sender, System.EventArgs e)
{


dzs_kenConn.Open();

SqlDataAdapter dzs_kenAdap = new SqlDataAdapter("select * from ken_plan ", dzs_kenConn);
SqlCommandBuilder ken_cb = new SqlCommandBuilder(dzs_kenAdap);


DataSet ds = new DataSet();
dzs_kenAdap.Fill(ds, "ken_plan");
ken_plan_tb = ds.Tables["ken_plan"];
}
web控件中:
private DataTable dtbname;

/*[Bindable(true),
Category("data"),
DefaultValue("")]*/
public DataTable Dtbname
{
get
{
return dtbname;
}

set
{
dtbname = value;
}
}
for (int i=0; i < Rownum; i++)
{
htw.RenderBeginTag(HtmlTextWriterTag.Tr);
for (int j=0; j < Columnum; j++)
{
htw.RenderBeginTag(HtmlTextWriterTag.Td);
htw.Write(dtbname.Rows[0][0].ToString());
htw.RenderEndTag();

}

htw.RenderEndTag();
}
ahking 2003-07-13
  • 打赏
  • 举报
回复
看了两三天了,头晕眼花,始终不得要领,唉................
ahking 2003-07-13
  • 打赏
  • 举报
回复
哪章的呢?
webdiyer 2003-07-13
  • 打赏
  • 举报
回复
去www.wrox.com下载这本书的代码:
Professional ASP.NET Server Controls - Building Custom Controls with C#
ahking 2003-07-12
  • 打赏
  • 举报
回复
下载地址?哪个例子?
ahking 2003-07-11
  • 打赏
  • 举报
回复
to:webdiyer(陕北吴旗娃)
这种情况下怎样写转换器呢??
ahking 2003-07-11
  • 打赏
  • 举报
回复
转换器
ken2003 2003-07-11
  • 打赏
  • 举报
回复
up
ken2003 2003-07-11
  • 打赏
  • 举报
回复
up
ken2003 2003-07-11
  • 打赏
  • 举报
回复
up
webdiyer 2003-07-11
  • 打赏
  • 举报
回复
建议下载Wrox的那个控件代码自己看看,几句话说不清,而且我也好长时间没弄这个了!
webdiyer 2003-07-10
  • 打赏
  • 举报
回复
给你的自定义控件加一个公共属性 public DataTable SourceTable{get{...}set{..}}
在引用时把引用页上的DataTable赋给这个属性就行了。
ahking 2003-07-10
  • 打赏
  • 举报
回复
调用它的.cs文件中:
.....创建数据库连接
dzs_kenConn.Open();

SqlDataAdapter dzs_kenAdap = new SqlDataAdapter("select * from ken_plan ", dzs_kenConn);
SqlCommandBuilder ken_cb = new SqlCommandBuilder(dzs_kenAdap);
DataSet ds = new DataSet();
dzs_kenAdap.Fill(ds, "ken_plan");
ken_plan_tb = ds.Tables["ken_plan"];
web控件中:
htw.RenderBeginTag(HtmlTextWriterTag.Table);
for (int i=0; i < Rownum; i++)
{
htw.RenderBeginTag(HtmlTextWriterTag.Tr);
for (int j=0; j < Columnum; j++)
{
htw.RenderBeginTag(HtmlTextWriterTag.Td);
ken_plan_tb .Rows[i][j]//此处写表字段内容
htw.RenderEndTag();

}

htw.RenderEndTag();
}
htw.RenderEndTag();
ahking 2003-07-10
  • 打赏
  • 举报
回复
up
ahking 2003-07-10
  • 打赏
  • 举报
回复
怎样写个转换器呢??
ahking 2003-07-10
  • 打赏
  • 举报
回复
我不想列出来,只是想在设计时可以自己将页面上已有的DataTable传入控件,然后将数据写出来啊!!
webdiyer 2003-07-10
  • 打赏
  • 举报
回复
要在设计时绑定DataTable,你需要自己写个转换器,要不就算页面上有DataTable,它也不会给你列出来让你选择!
dragonsuc 2003-07-10
  • 打赏
  • 举报
回复
wrox书上的例题:
using System;
using System.Web;
using System.Web.UI;
using System.Collections;
using System.Web.UI.WebControls;

namespace WroxControls
{


// Naming container for template items

public class CollectionItem2 : WebControl, INamingContainer
{

object _dataitem;

public object DataItem
{
get{ return _dataitem; }
}

public CollectionItem2(object value)
{
_dataitem = value;
}
}

public class ICollectionLister2 : WebControl, INamingContainer
// Step 3
{

// The data source the control will enumerate

ICollection _datasource;

public ICollection DataSource
{
get { return _datasource; }
set { _datasource = value; }
}

// The template used for the header

ITemplate _headingStyle;

[TemplateContainer(typeof(ICollectionLister2))]
public ITemplate HeadingStyle
{
get{ return _headingStyle; }
set{ _headingStyle = value; }
}

// The template used for the item

ITemplate _itemStyle;

[TemplateContainer(typeof(CollectionItem2))]
public ITemplate ItemStyle
{
get{ return _itemStyle; }
set{ _itemStyle = value; }
}


// Create the child control hierarchy from viewstate only

protected override void CreateChildControls()
{
int iCount = 0;
int i;
CollectionItem2 item;

if ( _headingStyle != null )
_headingStyle.InstantiateIn( this );

iCount = (int) ViewState["count"];

for( i=0; i< iCount; i++ )
{
if ( _itemStyle != null )
{
item = new CollectionItem2( null );
_itemStyle.InstantiateIn( item );
Controls.Add( item );
}
}

}

// Create control hierarchy with the data source

protected override void OnDataBinding( EventArgs args )
{
base.OnDataBinding(args);

if ( _datasource == null )
throw new Exception("Control requires a data source");


ClearChildViewState();
Controls.Clear();

// Clear all controls and state

IEnumerator e;
int iCount = 0;

if ( _headingStyle != null )
_headingStyle.InstantiateIn( this );

e = _datasource.GetEnumerator();

CollectionItem2 item;

while( e.MoveNext() )
{
if ( _itemStyle != null )
{
item = new CollectionItem2( e.Current );
_itemStyle.InstantiateIn( item );
Controls.Add( item );
iCount++;

}
}

// Remember the number of controls, so we can recreate the
// same controls, without the data source.

ViewState["count"] = iCount;

// stop CreateChildControls() being called again
ChildControlsCreated = true;

// Ensure view state is being tracked
TrackViewState();
}
}
};

ahking 2003-07-10
  • 打赏
  • 举报
回复
我是在设计环境中设置该属性啊!!
[Bindable(true),
Category("data"),
DefaultValue("")]
加载更多回复(7)

62,242

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧