我有一个网格视图,它的前三列是手动创建的,我想在代码后面动态添加剩余的列,其余的列必须包含文本框。我该怎么做? 我尝试了以下链接中的代码: How to add TemplateField programmatically 通过使用这个我可以在列中添加文本框,但无法找到一种方法来访问文本框中的值
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会丢失,有没有办法阻止这个?
答案 0 :(得分:0)
使用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;
}