0

我想将内容更改grid viewtextbox.
这是我的代码的一部分

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 个空白行,

4

2 回答 2

2

你为什么不使用模板字段
为什么在设计时在运行时?

这是模板字段的示例

<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>
于 2013-03-28T03:56:56.977 回答
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>

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

于 2013-03-28T04:43:52.323 回答