导航
  • 主页
  • ASP
  • .NET Framework
  • Web Services
  • VB
  • VC
  • 图表区
  • 分析与设计
  • 组件/控件开发
  • LINQ
  • 问答

复合控件post之后为什么不显示了,请高手指教?

yanlixin4csdn 2005-10-25 10:56:18
原代码在这~~~~
http://blog.csdn.net/justgo/archive/2004/11/13/180288.aspx

急·~~请高手帮助

使用这样绑定数据,第一进入该页面的时候,使用正常.可是当post回来之后,4个状态按钮和转到的ddl就消失,不显示了.
请问需要在哪里设置?

请问这个问题怎么解决?
项目中用到这个控件了,现在不能用了,非常着急,谢谢
...全文
129 点赞 收藏 16
写回复
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
lswweb 2005-11-07
要么你把动态生成控件的函数放在IsPageLoad外边。。。要么在OnInit中加入你生成动态控件的函数。
#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
//加上以下代码
if(Request.Form["__VIEWSTATE"]!=null)
{
//放入动态生成控件的函数。。。
//例:this.Clothing();
//例:this.BindImage();
}
}
回复
0078399 2005-11-07
http://blog.sina.com.cn/u/4033efba0100004a

回复
zyug 2005-10-26
你的控件会生成的

(从Page的init 到Page 容器中各个控件的init会递归调用 ),不用你手工控制的


多看一下服务器控件与组件开发吧,你的问题非常简单
回复
yanlixin4csdn 2005-10-25
to zyug(LovlyPuppy)
sorry,是我说的不详细,BLOG中的是一个分页控件的代码,上面贴的是我调用控件的代码(其中很多是多余的,为了方便我就全貼上了),我改一下控件试一下你的方法·~~谢谢
回复
zyug 2005-10-25
???
我看的代码怎么和上面的不一样?


你CSDN的blog中的代码原因在这里

OnPreRender()
{
if(!Page.IsPostBack){....;PagerBinder();}
}
而你点按钮可以显示却是你在按钮的方法中加入了执行该方法的代码
Btn_CLick
{
PagerBinder();
....;
}

建议你

OnPreRender()
{
if(!Page.IsPostBack){....;}
PagerBinder();}
}
回复
yanlixin4csdn 2005-10-25
这是里调用这个控件的代码,大家看看〕
当点击Button3时就不显示了
回复
yanlixin4csdn 2005-10-25
namespace web.Module
{
using System;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.Text.RegularExpressions;
/// <summary>
/// m_公共_评论 的摘要说明。
/// </summary>
public class m_公共_评论 : ModuleBase
{
#region 属性
#region 是否显示全部内容
/// <summary>
/// 是否显示全部内容
/// </summary>
private bool isShowAll=true;
public bool IsShowAll
{
get { return isShowAll; }
set { isShowAll = value; }
}
#endregion
protected C_Pager.Pager Pager1;
protected System.Web.UI.WebControls.TextBox tbContent;
protected System.Web.UI.WebControls.Button Button发表;
protected System.Web.UI.WebControls.Button Button重添;
protected System.Web.UI.WebControls.Button Button部分显示;
protected System.Web.UI.WebControls.Button Button全部显示;
protected System.Web.UI.WebControls.DataList DataList1;
private int id;
protected System.Web.UI.WebControls.LinkButton LinkButton1;
private int _评论类别=1;
public int 评论类别
{
get{return _评论类别;}
set{_评论类别=value;}
}
#endregion
private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面

id=Convert.ToInt32(Request["id"]);
if(!IsPostBack)
{
Page.EnableViewState = true;
DataBind(0);
}
}

#region Web 窗体设计器生成的代码
override protected void OnInit(EventArgs e)
{
//
// CODEGEN: 该调用是 ASP.NET Web 窗体设计器所必需的。
//
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器
/// 修改此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.Pager1.PageChanged += new System.EventHandler(this.Pager1_PageChanged_1);
this.Button全部显示.Click += new System.EventHandler(this.Button1_Click);
this.Button部分显示.Click += new System.EventHandler(this.Button2_Click);
this.DataList1.ItemDataBound += new System.Web.UI.WebControls.DataListItemEventHandler(this.DataList1_ItemDataBound);
this.tbContent.TextChanged += new System.EventHandler(this.tbContent_TextChanged);
this.LinkButton1.Click += new System.EventHandler(this.Button3_Click);
this.Button发表.Click += new System.EventHandler(this.Button3_Click);
this.Button重添.Click += new System.EventHandler(this.Button5_Click);
this.Load += new System.EventHandler(this.Page_Load);

}
#endregion


#region 过滤用户输入
/// <summary>
/// 过滤
/// </summary>
/// <param name="content"></param>
/// <returns></returns>
public string StripHtmlXmlTags (string content)
{
return Regex.Replace(content, "<[^>]+>", "", RegexOptions.IgnoreCase | RegexOptions.Compiled);
}
public string StripAllTags ( string stringToStrip )
{
stringToStrip=stringToStrip.Replace("<","〈");
stringToStrip=stringToStrip.Replace(">","〉");
return stringToStrip;
}

#region 控件内容显示的字符个数
/// <summary>
/// 控件内容显示的字符个数
/// </summary>
/// <param name="content"></param>
/// <returns></returns>
private string GetReviewContent(string content)
{

int len = content.Length;

//this.标题长度
if(len<30)
{
for(int i=0 ;i<40-len;i++)
content += " ";
}

return content;
}
#endregion
#endregion

private void Button3_Click(object sender, System.EventArgs e)
{
string str;
str = StripAllTags(tbContent.Text);
if(str.Trim().Length==0)
{
tbContent.Text = "";
return;
}
str = GetReviewContent(str);

//添加到数据库
AddInfo(str);

}
private void AddInfo(string content)
{
Cnttu.CnttuService.评论_评论内容Info info = new Cnttu.CnttuService.评论_评论内容Info();
info.原文ID=id;
info.评论内容=content;
info.评论类别=评论类别;
info.会员ID=1;
Cnttu.WebServiceAccess.MethodProvider.Instance().ExecuteMethod("评论_评论内容_添加",info);
DataBind(Pager1.CurPage);
tbContent.Text=string.Empty;

}

#region 数据绑定方法
/// <summary>
/// //数据绑定方法
/// </summary>
/// <param name="CurPage"></param>
private void DataBind(int CurPage)  
{
//0顺序,1倒序//数据源名称
this.DS= Cnttu.WebServiceAccess.MethodProvider.Instance().GetMethodData("评论_评论内容_搜索",CurPage,Pager1.PageSize,out 返回参数,排序列名,1);
//排序字段,int 排序类型,string 搜索内容 ,int 新闻类别,
#region 是否控制标题长度
// if(是否控制标题长度)
// {
// for(int i=0 ;i<DS.Tables[0].Rows.Count;i++)
// {
// if(DS.Tables[0].Rows[i]["标题"].ToString().Length>=标题长度)
// DS.Tables[0].Rows[i]["标题"]=DS.Tables[0].Rows[i]["标题"].ToString().Substring(0,标题长度)+" ...";
// else
// DS.Tables[0].Rows[i]["标题"]=DS.Tables[0].Rows[i]["标题"].ToString();
//
// }
// }
#endregion
DataList1.DataSource = this.DS;
DataList1.DataBind();

Pager1.RecTotal = (int) 返回参数;
Pager1.DataBind();
}
#endregion


private void DataList1_ItemDataBound(object sender, System.Web.UI.WebControls.DataListItemEventArgs e)
{
//设置更多标题行(e,1);
}

private void Button5_Click(object sender, System.EventArgs e)
{
tbContent.Text="";
}
private void Button1_Click(object sender, System.EventArgs e)
{
Button全部显示.Text="全部显示";
IsShowAll = true;
}

private void Button2_Click(object sender, System.EventArgs e)
{
Button部分显示.Text="部分显示";
IsShowAll = false;
}

private void Pager1_PageChanged_1(object sender, System.EventArgs e)
{
DataBind(Pager1.CurPage);
}

private void tbContent_TextChanged(object sender, System.EventArgs e)
{

}

}
}
回复
zyug 2005-10-25
post 之后
会执行createchildcontrols但不会帮你执行你自定义的方法 PagerBind()

回复
zyug 2005-10-25
dgSOrder.CurrentPageIndex = Pager1.CurPage;
dgSOrder.DataBind();
Pager1.PagerBind();
回复
zyug 2005-10-25
dgSOrder.CurrentPageIndex = Pager1.CurPage;
dgSOrder.DataBind();
PagerBind();
回复
yanlixin4csdn 2005-10-25
两位朋友可以试一下代码,可以运行的,当列表览的时候,上一页,下一页等都正常显示
当加一个BUTTON后,点击BUTTON进行添加数据时,这时候就不显示了!!
回复
yanlixin4csdn 2005-10-25
两位回答的都不对~~
回复
tigerwen01 2005-10-25
使用
...
if(!IsPostBack){
//Add demo
}
回复
moodboy1982 2005-10-25
没用过,是不是你电脑的设置不同呀?
回复
yanlixin4csdn 2005-10-25
to hchxxzx(NET?摸到一点门槛)
post之后生成一次控件,具体该怎么作呢?
回复
hchxxzx 2005-10-25
复合控件,是自己写的吧。
普通的控件,如果从后台向前台写入的话,那么,为了保持它的状态,要求在每次页面提交之后,都要重新生成一次控件,否则,即会出现类似情况。
回复
发动态
发帖子
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
社区公告
暂无公告