.NET中,自定义控件+Updatepanel的问题,

yangyucau 2010-03-10 02:26:21
自定义控件有个type属性,在前台页面中拖入这个空间后,设置它的值。根据值的不同,从数据库中调出不同值的数据,在使用updatePanel后(有个button),触发刷新时,因为只是刷新updatePanel的部分,无法获取type在页面中的值,怎么办呢?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using AjaxControlToolkit;
using System.Collections;

namespace CNews
{
[DefaultProperty("Text")]
[ToolboxData("<{0}:CNewsAutoUpdate runat=server></{0}:CNewsAutoUpdate>")]
public class CNewsAutoUpdate : WebControl, INamingContainer {
[Bindable(true)]
[Category("Appearance")]
[DefaultValue("")]
[Localizable(true)]

protected ScriptManager scriptManager;
protected UpdatePanel updatePanel;

protected DropDownList dropCategory;
protected Label lblResult;
protected Button btnResult;
protected TextBox txtResult;
protected Table objT;
protected Table objOutT;
protected DataGrid objDD;
private string stype = "新闻";
private string NewsType = "";
public string type
{
get
{
return this.stype;
}
set
{
this.stype = value;
}
}


protected void btnResult_Click(object sender, EventArgs e)
{
lblResult.Text = DateTime.Now.ToString();
}

protected void objT_Init(object sender, EventArgs e)
{


}

protected override void CreateChildControls()
{

Controls.Clear();
objOutT = new Table();
objOutT.CssClass = "dragTable";
TableRow tr = new TableRow();
TableCell tc = new TableCell();
tc.Text = stype;

NewsType = tc.Text;
tr.Cells.Add(tc);
objOutT.Rows.Add(tr);
tc = new TableCell();
tr = new TableRow();

updatePanel = new UpdatePanel();
updatePanel.UpdateMode = UpdatePanelUpdateMode.Conditional;
updatePanel.ChildrenAsTriggers = true;
updatePanel.RenderMode = UpdatePanelRenderMode.Inline;
updatePanel.EnableViewState = true;


lblResult = new Label();
updatePanel.ContentTemplateContainer.Controls.Add(lblResult);

objT = new Table();

CCNews objNews = null;
ArrayList objNewsList = CNewsManage.getTypeNewsTop6(stype);
TableRow objTableRow = new TableRow();
TableCell objTableCell = new TableCell();

objTableRow.Cells.Add(objTableCell);
objT.Rows.Add(objTableRow);

for (int i = 0; i < objNewsList.Count; i++)
{
objNews = (CCNews)objNewsList[i];

objTableRow = new TableRow();
System.Web.UI.WebControls.HyperLink objHL = new HyperLink();
objTableCell = new TableCell();

// 时间处理
System.DateTime myDate = new DateTime();
myDate = DateTime.Parse(objNews.DateTime);
string NewsTitle = objNews.Title;
NewsTitle = NewsTitle.Trim();
string yun = NewsTitle;

if (NewsTitle.Length >= 20)
{

NewsTitle = "<li>" + NewsTitle.Substring(0, 16);
NewsTitle += "...." + '[' + myDate.ToString("yyyy/MM/dd") + ']' + "</li>";
}
else
{
NewsTitle = "<li>" + yun + '[' + myDate.ToString("MM/dd") + ']' + "</li>";
}
objHL = new HyperLink();
objTableCell = new TableCell();

objTableCell.VerticalAlign = System.Web.UI.WebControls.VerticalAlign.Middle;
objTableCell.HorizontalAlign = System.Web.UI.WebControls.HorizontalAlign.Left;

objTableCell.Width = 258;
objTableCell.BorderWidth = 0;

objHL.NavigateUrl = "shownewsdddddddddddddddddd.aspx?NewsID=" + objNews.ID;
objHL.Text = NewsTitle;
objTableCell.Controls.Add(objHL);
//向行中添加单元各
objTableRow.Cells.Add(objTableCell);
objT.Rows.Add(objTableRow);
}

objTableRow = new TableRow();
objTableCell = new TableCell();
btnResult = new Button();//此处可实现异步提交
btnResult.Text = "刷新";
btnResult.CssClass = "box3";
//btnResult.Click += new EventHandler(btnResult_Click);
objTableCell.Controls.Add(btnResult);
objTableRow.Cells.Add(objTableCell);
objT.Rows.Add(objTableRow);

//objT.Init += new EventHandler(objT_Init);

updatePanel.ContentTemplateContainer.Controls.Add(objT);
//objDD = new DataGrid();
// objDD.DataSource = CNewsManage.getDataSetTypeNewsTop6(type);
// objDD.CssClass = "box3";
// objDD.ID = "sontable";
// objDD.DataBind();


tc.Controls.Add(updatePanel);
tr.Cells.Add(tc);
objOutT.Rows.Add(tr);
Controls.Add(objOutT);
}




protected override void RenderContents(HtmlTextWriter writer)
{

//scriptManager.RenderControl(writer);
objOutT.RenderControl(writer);


}
}
}
...全文
126 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangyucau 2010-03-10
  • 打赏
  • 举报
回复
主要是这个页面有》10的自定义控件,因此,用ViewState是不是浪费了点。
这个主要就是实现类似google自定义主页中能拖动的部分。该怎么办呢?
kyoybs 2010-03-10
  • 打赏
  • 举报
回复
1、把自定义控件放在 updatePanel中
2、把自定义控件的Type属性存到ViewState中。

这样就可以访问了。

62,046

社区成员

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

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

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

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