.NET中,自定义控件+Updatepanel的问题,
自定义控件有个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);
}
}
}