1

我正在将模板文件动态添加到动态添加的 gridview 控件中。

我添加这样提交的模板:

 TemplateField TmpCol = new TemplateField();
                        TmpCol.HeaderText = "";
                        TmpCol.ShowHeader = false;
                        rpt.Columns.Add(TmpCol);
                        TmpCol.ItemTemplate = new TemplateHandler();

班级:

public class TemplateHandler : ITemplate
{
    void ITemplate.InstantiateIn(Control container)
    {
        CheckBox cmd = new CheckBox();
        cmd.ID = "ckSkill";
        cmd.Text = --  want to give data text filed here or pass a custom  text

        container.Controls.Add(cmd);
    }

}

所以模板字段中的复选框我想给容器值。

就像我们在 aspx 页面中所做的一样

 <%# Eval("demo") %>

非常感谢任何帮助

4

3 回答 3

1

我需要像这样修改处理程序以使其工作

   public class TemplateHandler : ITemplate
{
    void ITemplate.InstantiateIn(Control container)
    {
        CheckBox cmd = new CheckBox();
        cmd.ID = "ckSkill";
        // cmd.Text = "tets";

        cmd.DataBinding += new EventHandler(this.BindData);

        //cmd.Click += new EventHandler(Dynamic_Method);
        container.Controls.Add(cmd);
    }

    public void BindData(object sender, EventArgs e)
    {
        CheckBox l = (CheckBox)sender;
        GridViewRow container = (GridViewRow)l.NamingContainer;

        l.Text = ((TableNameClass)container.DataItem).SkillText; // ((DataRowView)container.DataItem)["SkillText"].ToString();

    }

    protected void Dynamic_Method(object sender, EventArgs e)
    {
        ((CheckBox)sender).Text = "Hellooooo";
    }
}
于 2012-11-29T14:57:39.927 回答
0

在动态创建模板化字段时,您需要设置一些可用于确定列名的属性(例如 header tex)。完成后,您可以使用以下代码设置数据。

数据行视图驱动;
drv = ((DataRowView) container.DataItem);
cmd.Text = drv["姓氏"].ToString();

如需更详细的说明,请使用这篇文章 让我知道您是否需要更多帮助。

于 2012-11-29T14:51:33.207 回答
0

You can give container value by the handling row data bound event of gridview. Like.

protected void grdData_RowDataBound(object sender, C1GridViewRowEventArgs e)
 {
    string sText = Convert.ToString(((System.Data.DataRowView)             (e.Row.DataItem)).Row.ItemArray[0]); 

    CheckBox chkText = (CheckBox)e.Row.FindControl("ckSkill");
    chkText.Text = sText.ToString();
 }
于 2013-11-21T10:42:24.843 回答