0

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 行だけあります。

4

2 に答える 2

2

Template フィールドを使用しないのはなぜですか。
設計時になぜ実行時に?

テンプレート フィールドの例を次に示します。

<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);

GridView で値を編集するための EditTemplate を追加してみることができます。

または、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>

グリッドがページに表示されると、データは Label に配置され、その行を編集すると TextBox に表示されます。

于 2013-03-28T04:43:52.323 に答える