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

テンプレート化されたフィールドを動的に作成している間、列名を決定するために使用できるいくつかのプロパティ (ヘッダー tex など) を設定する必要があります。それが完了したら、次のコードを使用してデータを設定できます。

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

詳細な説明については、この記事を使用してください 。さらにサポートが必要な場合はお知らせください。

于 2012-11-29T14:51:33.207 に答える
0

グリッドビューの行データバインドイベントを処理することで、コンテナに値を与えることができます。お気に入り。

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 に答える