自定义控件VS动态TemplateField复选框

时间:2010-07-31 19:30:22

标签: c# .net asp.net

我在自定义服务器控件上工作,其中包含两个带有动态模板字段的网格复选框,第一个由SqlDataSource绑定,第二个网格填充第一个网格中的选定行, 一切都很清楚,第二个网格填充得恰当,但是当一个按钮(自定义控件之外)点击事件触发时,网格消失,其次重要的是如何在回发后保存复选框的状态我必须创建字段并绑定网格?

感谢您的直接答复。

表示模板字段:

class CheckBoxTemplateHandler:ITemplate  
{  
    void ITemplate.InstantiateIn(Control container)  
    {  
        CheckBox cb = new CheckBox();  
        cb.ID = "CB";  
        //cb.EnableViewState = true;  

        cb.AutoPostBack = true;  
        cb.DataBinding += new EventHandler(this.cb_DataBinding);  
        cb.CheckedChanged += new EventHandler(Dynamic_Method);  
                    container.Controls.Add(cb);  

    }  
    protected void Dynamic_Method(object sender, EventArgs e)  
    {  

        if (((CheckBox)sender).Checked)  
        {  

            ((CheckBox)sender).Text = "Selected";  




        }  

    }  
    private void cb_DataBinding(Object sender, EventArgs e)  
    {  
        // Get the checkbox control to bind the value. The checkbox control  
        // is contained in the object that raised the DataBinding   
        // event (the sender parameter).  
        CheckBox l = (CheckBox)sender;  

        // Get the GridViewRow object that contains the checkbox control.   
        GridViewRow row = (GridViewRow)l.NamingContainer;  


        // Get the field value from the GridViewRow object and   
        // assign it to the Text property of the checkbox control.  
        l.Text = DataBinder.Eval(row.DataItem, "price").ToString();  

}  

2 个答案:

答案 0 :(得分:0)

您需要在Pre_Init中绑定。关于丢失复选框的选定值的问题也应该消失。

答案 1 :(得分:0)

只是覆盖所有Control LifeCycle事件(重新绑定gridview),我认为这是一个很难的主题 很多开发人员!