where is this code? in Render? it is too late, dofor(int n=1;n<=nTotalPage;n++)
{
GoPage[n]=new LinkButton();
GoPage[n].Text=n.ToString();
GoPage[n].ID="GoPage"+n.ToString();
GoPage[n].Click+=new EventHandler(this.Gopageclicked);
Controls.Add(GoPage[n]); }in Page_PreRender or before
{
GoPage[n]=new LinkButton();
GoPage[n].Text=n.ToString();
GoPage[n].ID="GoPage"+n.ToString();
GoPage[n].Click+=new EventHandler(this.Gopageclicked);
Controls.Add(GoPage[n]); }in Page_PreRender or before
解决方案 »
- login控件中 FailureText显示登录错误信息 希望以窗口的方式显示该怎么做
- 哪位大哥来救命啊!!!
- 大家在做asp.net页面时,用的哪个软件做介面?
- 电脑上全部的html、aspx页面都被加了一段iframe标记
- 为什么从表单中获取textbox 值时出错?
- 模态窗口问题:新建按钮时弹出新建窗口,如果关闭或取消;再回到父页 点击排序 或 翻页 重新绑定gridview后又弹出来了?
- 請問DataGrid如何在水晶報表里調用 ?
- dataset存在那儿
- 有没有什么控件可以定时刷新GridView的
- ▲▲▲▲超难问题,解决者高分相送,不够在加▲▲
- 一个应该对大家来说不是很困难的问题,谢谢
- NetAdvantage 2003正式版下载地址
protected override void Render(HtmlTextWriter htw)
{
htw.Write("<tr>");
htw.Write("<td>");
...写其他内容
htw.Write("</td>");
htw.Write("</tr>");htw.Write("<tr>");
htw.Write("<td>");
...写linkbutton
htw.Write("</td>");
htw.Write("</tr>");
}
{
int nTotalCount=Dtbname.Rows.Count;
nTotalPage = nTotalCount/PageSize;
nTotalPage += nTotalCount % PageSize > 0? 1:0;
LinkButton[] GoPage=new LinkButton[nTotalPage+2];
for(int n=1;n<=nTotalPage;n++)
{
GoPage[n]=new LinkButton();
GoPage[n].Text=n.ToString();
GoPage[n].ID="GoPage"+n.ToString();
GoPage[n].Click+=new EventHandler(this.Gopageclicked);
}
}
private void Gopageclicked(Object sender, EventArgs e)
{
LinkButton lb = (LinkButton)sender;
nStartcount=PageSize*(System.Convert.ToInt16(lb.ID.Substring(6))-1);
}
/// <param name="output"> 要写出到的 HTML 编写器 </param>
protected override void OnPreRender(System.EventArgs e)
{
int nEndcount;
if(nStartcount+PageSize>=dtbname.Rows.Count)
{
nEndcount=dtbname.Rows.Count;}
else
{
nEndcount=nStartcount+PageSize;
}
for (int i=nStartcount; i < nEndcount; i++)
{
trcontent =new TableRow();
//问题1:
trcontent.BackColor=Trbgcolor;
//问题2,第一列加连接:
TableCell tc = new TableCell();
tc.Attributes.AddAttributes(href,"<a href="+Linkpage+"?"+Trans_guid+"="+Dt_guid+">");
tc.Text=dtbname.Rows[i][Dt_guid].ToString();
trcontent.Cells.Add(tc); for (int j=1; j < Columnum; j++)
{
tc.Text=dtbname.Rows[i][j].ToString();
trcontent.Cells.Add(tc);
}
}
//问题3,单独加一列,放linkbutton }我按你的写,有几个问题:
1、列的背景色无法设,因为属性Trcolor是string类型
2、无法给第一列的单元格加链接
3、不会在最后一行加linkbutton
{
//...
for (int i=nStartcount; i < nEndcount; i++)
{
LinkButton lb = new LinkButton();
lb.Text= (nEndcount-nStartcount).ToString();
lb.ID="GoPage" + n.ToString();
lb.Click+= new EventHandler(this.Gopageclicked);
trcontent =new TableRow();
trcontent.BackColor=System.Drawing.ColorTranslator.FromHtml(Trbgcolor);TableCell tc = new TableCell();
tc.Controls.Add(lb);trcontent.Cells.Add(tc);//....
}
}
1. shown above2. if you want to manually output <a href= ..your control needs to implement IPostBackEventHandler interface void RaisePostBackEvent(string eventArgument)
{
//do something based on eventArgument
}protected override void Render(HtmlTextWriter writer)
{
for (int i=0; i < nRow; i++)
{
writer.Write("<tr><td>");
writer.Write("<a href='javascript:" + GetPostBackEventReference(this, i.ToString()) + "'>" + "Sometext" + "</a>");
writer.Write("</td>");
....
}
{
void RaisePostBackEvent(string eventArgument)
{
SomeMethod(eventArgument);}void SomeMethod(string eventArgument)
{
//do something based on eventArgument
}protected override void Render(HtmlTextWriter writer)
{
for (int i=0; i < nRow; i++)
{
writer.Write("<tr><td>");
writer.Write("<a href='javascript:" + GetPostBackEventReference(this, i.ToString()) + "'>" + "Sometext" + "</a>");
writer.Write("</td>");
//....
}
}
}
SomeControl.Controls.Add(lb);这样生成的LinkButton也不能连接到事件方法上去但你总归可以做
writer.Write("<a href='javascript:" + GetPostBackEventReference(this, i.ToString()) + "'>" + "Sometext" + "</a>");
{
void IPostBackEventHandler.RaisePostBackEvent(string eventArgument)
{
SomeMethod(eventArgument);
}void SomeMethod(string eventArgument)
{
//do something
Page.Response.Write("I am clicked!");
}protected override void Render(HtmlTextWriter writer)
{
//在这里先写n行带有超连接的表格行 writer.Write("<tr><td>");
writer.Write("<a href='javascript:" + GetPostBackEventReference(this) + "'>" + "Sometext" + "</a>");
writer.Write("</td></tr>");
// ....
}
}
using System.Web.UI;namespace CustomControls
{
public class MyLinkList : Control, IPostBackEventHandler
{
void IPostBackEventHandler.RaisePostBackEvent(string strEvent)
{
SomeMethod(strEvent);
} void SomeMethod(string strEvent)
{
Page.Response.Write("it is " + DateTime.Now.ToString() + ". I am clicked!!!!");
} protected override void Render(HtmlTextWriter htw)
{
htw.RenderBeginTag(HtmlTextWriterTag.Table);
for (int i=0; i < 10; i++)
{
htw.RenderBeginTag(HtmlTextWriterTag.Tr);
htw.RenderBeginTag(HtmlTextWriterTag.Td);
htw.AddAttribute(HtmlTextWriterAttribute.Href,"http://www.csdn.net");
htw.RenderBeginTag(HtmlTextWriterTag.A);
htw.Write("CSDN");
htw.RenderEndTag();
htw.RenderEndTag();
htw.RenderEndTag();
} htw.RenderBeginTag(HtmlTextWriterTag.Tr);
htw.RenderBeginTag(HtmlTextWriterTag.Td);
htw.AddAttribute(HtmlTextWriterAttribute.Href,"javascript:" + Page.GetPostBackEventReference(this));
htw.RenderBeginTag(HtmlTextWriterTag.A);
htw.Write("Click Me!");
htw.RenderEndTag();
htw.RenderEndTag();
htw.RenderEndTag(); htw.RenderEndTag();
}
}}
TestPage.aspx:
<%@ Register TagPrefix="cc2" Namespace="CustomControls" Assembly="CustomControls" %>
<HTML>
<body>
<form id="WebForm1" method="post" runat="server">
<cc2:MyLinkList id="MyLinkList1" runat="server"></cc2:MyLinkList>
</form>
</body>
</HTML>
for(int n=1;n<=nTotalPage;n++)
{
GoPage[n]=new LinkButton();
GoPage[n].Text=n.ToString();
GoPage[n].ID="GoPage"+n.ToString();
GoPage[n].Click+=new EventHandler(this.Gopageclicked);
Controls.Add(GoPage[n]); }