2012-11-29 87 views
1

我正在動態添加一個模板提交給動態添加的gridview控件。爲GridView動態添加ItemTemplate

我補充提交這樣的模板:

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

使用container.DataItem.Eval( 「的ColumnName」) –

+0

@PrashantLakhlani如何使用本container.DataItem.Eval( 「的ColumnName」)的代碼 – Moons

+0

@PrashantLakhlani見我的代碼 - 所有的控件,模板字段動態 – Moons

回答

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"; 
    } 
} 
0

雖然動態創建模板化領域,你需要設置一些屬性(例如,頭TEX),您可以用於確定列名稱。一旦你完成了,你可以使用下面的代碼來設置數據。

 
DataRowView drv; 
drv = ((DataRowView) container.DataItem); 
cmd.Text = drv["lastname"].ToString(); 

如需更詳細的解釋,use this article 讓我知道如果你需要更多的幫助。

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(); 
}