2011-04-18 18 views

Respuesta

18

Use TemplateField y agregue un TextBox a la plantilla ItemTemplate/EditItem.

<ItemTemplate> 
    <asp:TextBox ID="TxtFirstName" runat="server" Text='<%# Bind("FirstName") %>'></asp:TextBox> 
</ItemTemplate> 

Puede obligar a éste en el aspx como en el ejemplo anterior, o en GridView.RowDataBound:

Private Sub GridView1_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles GridView1.RowDataBound 
    Select Case e.Row.RowType 
     Case DataControlRowType.DataRow 
      Dim dr As DataRow = DirectCast(DirectCast(e.Row.DataItem, DataRowView).Row) 
      Dim TxtFirstName As TextBox = DirectCast(e.Row.FindControl("TxtFirstName"), TextBox) 
      TxtFirstName.Text = dr("FirstName").ToString 
    End Select 
End Sub 

Editar: Aquí es un ejemplo sencillo de cómo añadir un TemplateField dinámicamente:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load 
    If Not IsPostBack Then 
     Dim txtColumn As New TemplateField 
     txtColumn.ItemTemplate = New TextColumn 
     Me.GridView1.Columns.Add(txtColumn) 
    End If 
End Sub 

Class TextColumn 
    Implements ITemplate 

    Public Sub InstantiateIn(ByVal container As System.Web.UI.Control) Implements System.Web.UI.ITemplate.InstantiateIn 
     Dim txt As New TextBox 
     txt.ID = "MyTextBox" 
     container.Controls.Add(txt) 
    End Sub 
End Class 

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.templatefield.templatefield.aspx

+0

del código detrás !! – Raika

+0

@Raika: Lo siento, leí esta parte;) Como primer inicio, eche un vistazo aquí: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.templatefield. templatefield.aspx –

+1

quiero algo como esto: ** TemplateField tmp = new TemplateField(); tmp.Add (cuadro de texto); grd.Columns.Add (tmp); ** – Raika

Cuestiones relacionadas