ASP.NET CheckBox AutoPostBack 未触发
ASP.NET CheckBox AutoPostBack not firing
我有一个要添加到服务器控件的复选框。此复选框也没有添加通常的 onclick...__doPostBack() 调用。这导致它不会像我希望的那样导致回发。
private void CreateGrid()
{
StringWriter sWriter = new StringWriter();
HtmlTextWriter writer = new HtmlTextWriter(sWriter);
GridItem.ID = "gridItem";
GridHeader.ID = "gridHeader";
GridHeader.Attributes["class"] += " no-select";
GridCount.ID = "GridCount";
GridDescription.ID = "GridDescription";
if (cBoxID == null) tBox.Visible = false;
else
{
tBox.ID = cBoxID;
tBox.AutoPostBack = true;
tBox.EnableViewState = true;
ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(tBox);
//tBox.CheckedChanged += new EventHandler(Force_Post_Back);
}
QuickFilter.Attributes["class"] = "quick-filter";
QuickFilter.Attributes["title"] = "Quick Filter";
IconMagnifier.Attributes["class"] = "icon-magnifier";
GridResults.ID = "ltlGridResults";
GridResults.ClientIDMode = ClientIDMode.Static;
//GridResults.EnableViewState = false;
QuickFilter.Controls.Add(IconMagnifier);
GridHeader.Controls.AddAt(0, tBox);
GridHeader.Controls.Add(QuickFilter);
GridHeader.Controls.Add(GridCount);
GridHeader.Controls.Add(GridDescription);
GridItem.Controls.Add(GridHeader);
GridItem.Controls.Add(GridResults);
}
protected void Page_PreRender(object sender, EventArgs e)
{
CreateGrid();
}
protected override void Render(HtmlTextWriter writer)
{
GridItem.RenderControl(writer);
}
我在 CreateGrid 方法的底部添加了以下代码行:
this.Controls.Add(GridItem);
这允许我将 GridItem 控件添加到当前控件,从而允许 post 支持。如果没有此调用,即使您呈现复选框,它也完全是愚蠢的。
我有一个要添加到服务器控件的复选框。此复选框也没有添加通常的 onclick...__doPostBack() 调用。这导致它不会像我希望的那样导致回发。
private void CreateGrid()
{
StringWriter sWriter = new StringWriter();
HtmlTextWriter writer = new HtmlTextWriter(sWriter);
GridItem.ID = "gridItem";
GridHeader.ID = "gridHeader";
GridHeader.Attributes["class"] += " no-select";
GridCount.ID = "GridCount";
GridDescription.ID = "GridDescription";
if (cBoxID == null) tBox.Visible = false;
else
{
tBox.ID = cBoxID;
tBox.AutoPostBack = true;
tBox.EnableViewState = true;
ScriptManager.GetCurrent(this.Page).RegisterPostBackControl(tBox);
//tBox.CheckedChanged += new EventHandler(Force_Post_Back);
}
QuickFilter.Attributes["class"] = "quick-filter";
QuickFilter.Attributes["title"] = "Quick Filter";
IconMagnifier.Attributes["class"] = "icon-magnifier";
GridResults.ID = "ltlGridResults";
GridResults.ClientIDMode = ClientIDMode.Static;
//GridResults.EnableViewState = false;
QuickFilter.Controls.Add(IconMagnifier);
GridHeader.Controls.AddAt(0, tBox);
GridHeader.Controls.Add(QuickFilter);
GridHeader.Controls.Add(GridCount);
GridHeader.Controls.Add(GridDescription);
GridItem.Controls.Add(GridHeader);
GridItem.Controls.Add(GridResults);
}
protected void Page_PreRender(object sender, EventArgs e)
{
CreateGrid();
}
protected override void Render(HtmlTextWriter writer)
{
GridItem.RenderControl(writer);
}
我在 CreateGrid 方法的底部添加了以下代码行:
this.Controls.Add(GridItem);
这允许我将 GridItem 控件添加到当前控件,从而允许 post 支持。如果没有此调用,即使您呈现复选框,它也完全是愚蠢的。