我正在动态添加模板到动态添加的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") %>
非常感谢任何帮助
答案 0 :(得分: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";
}
}
答案 1 :(得分:0)
在动态创建模板化字段时,您需要设置一些可用于确定列名称的属性(例如标题tex)。完成后,您可以使用以下代码来设置数据。
DataRowView drv; drv = ((DataRowView) container.DataItem); cmd.Text = drv["lastname"].ToString();
有关详细说明,请use this article 如果您需要更多帮助,请告诉我。
答案 2 :(得分:0)
您可以通过gridview的处理行数据绑定事件来提供容器值。 等。
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();
}