簡體   English   中英

具有動態生成的TemplateField列的Asp.Net網格視圖

[英]Asp.Net Grid view with Dynamically generated TemplateField Columns

我有一個Grid視圖,它的前三列是手動創建的,我想在后面的代碼中動態添加剩余的列,而且剩余的列必須在其中包含文本框。我該怎么做? 我嘗試了以下鏈接中的代碼: 如何以編程方式添加TemplateField通過使用此方法,我可以在列中添加文本框,但是找不到在文本框中訪問值的方法

 public class AddTemplateToGridView : ITemplate
{
    ListItemType _type;
    string _colName,status;
    int i = 0;


public AddTemplateToGridView(ListItemType type, string colname,string stat)
    {
        _type = type;

        _colName = colname;
        status = stat;
    }
    public AddTemplateToGridView()
    {

    }
    void ITemplate.InstantiateIn(System.Web.UI.Control container)
    {
        switch (_type)
        { 

            case ListItemType.Item:
                TextBox txt = new TextBox();
                txt.ID =id;
                if (status == "havevalue")
                {
                    txt.DataBinding += new EventHandler(ht_DataBinding);
                }

                container.Controls.Add(txt);
                break;
        }

    }

這是我添加文本框的代碼。如何為每個文本框添加不同的ID? 我發現當我單擊另一個按鈕時ID將會丟失,有什么辦法可以防止這種情況發生嗎?

添加您可以使用DataItemIndex的唯一ID:

private void tb_DataBinding(object sender, EventArgs e)
    {
        TextBox tb = (TextBox)sender;
        GridViewRow container = (GridViewRow)tb.NamingContainer;

        object dataValue = DataBinder.Eval(container.DataItem, columnName, GetFormat());
        if (dataValue != DBNull.Value)
            tb.Text = dataValue.ToString();

        tb.ID = columnName + container.DataItemIndex;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM