在网格视图中添加文本框
Posted
技术标签:
【中文标题】在网格视图中添加文本框【英文标题】:add text box in grid view 【发布时间】:2013-03-28 03:30:54 【问题描述】:我想将grid view
中的内容更改为textbox
。
这是我的代码的一部分
public class TextBoxTemplate : ITemplate
public void InstantiateIn(Control container)
TextBox txtBox = new TextBox();
txtBox.ID = "txtBox";
container.Controls.Add(txtBox);
//dtTeaching是网格视图的数据源
foreach (DataColumn col in dtTeaching.Columns)
if (col.ColumnName.Contains("Name"))
TemplateField tfName = new TemplateField();
tfName.ItemTemplate = new TextBoxTemplate();
tfName.HeaderText = "Programme Name";
gvTeaching.Columns.Add(tfName);
gvTeaching.DataSource = dtTeaching;
gvTeaching.DataBind();
for (int i = 0; i < gvTeaching.Rows.Count; i++)
TextBox k = (TextBox)gvTeaching.Rows[i].Cells[0].Controls[0];
k.Text = "test";
但结果是网格视图中不会显示任何内容。
没有textbox
没有内容,只有3个空白行,
【问题讨论】:
为什么不使用 asp 标记?是否需要以编程方式创建? 【参考方案1】:你为什么不使用Template field。 为什么在设计时在运行时?
这是一个模板字段的例子
<asp:TemplateField HeaderText="FirstName" SortExpression="FirstName">
<EditItemTemplate>
<asp:TextBox ID="TextBox1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="Label1" runat="server"
Text='<%# Bind("FirstName") %>'></asp:Label>
<asp:Label ID="Label2" runat="server"
Text='<%# Bind("LastName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
【讨论】:
【参考方案2】:你能带走吗:
TemplateField tfName = new TemplateField();
tfName.EditTemplate = new TextBoxTemplate();
tfName.HeaderText = "Programme Name";
gvTeaching.Columns.Add(tfName);
您可以尝试添加 EditTemplate 来编辑 GridView 中的值。
或者您可以简单地在 GridView 上添加这些字段。 喜欢: ......
<Columns>
<asp:TemplateField>
<ItemTemplate>
<asp:Label ID="lbl" runat="server" Text='<%#Bind("ColumnName") %>' />
</ItemTemplate>
<EditTemplate>
<asp:TextBox ID="txt" runat="server" Text='<%#Bind("ColumnName")%>' />
</EditTemplate>
</asp:TemplateField>
</Columns>
当网格显示在页面上时,数据将放置在标签中,当您编辑该行时,它将显示在文本框中。
【讨论】:
以上是关于在网格视图中添加文本框的主要内容,如果未能解决你的问题,请参考以下文章