我想将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个空行,
答案 0 :(得分: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>
答案 1 :(得分:1)
你能接受:
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>
当网格显示在页面上时,数据将被放置在标签中,当您编辑该行时,它将显示在TextBox中。