在网格视图中添加文本框

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>

当网格显示在页面上时,数据将放置在标签中,当您编辑该行时,它将显示在文本框中。

【讨论】:

以上是关于在网格视图中添加文本框的主要内容,如果未能解决你的问题,请参考以下文章

网格视图内的文本框不显示数据

在网格视图中添加带有文本框的 runat 服务器标记时使用 jquery 函数

以编程方式将新行添加到数据网格视图

在 extjs 网格视图中显示文本框

如何使用文本框在数据网格视图中搜索数据

在网格视图行中输入键文本框未获取 id 选择