J'ai un gridview auquel j'ajoute des champs de modèle par programmation. Chacun des champs de modèle a une zone de texte. Je souhaite que cette zone de texte possède une liaison bidirectionnelle avec une colonne de base de données. S'il vous plaît voir ci-dessous le code.Comment lier une zone de texte dans un champ de modèle par programmation
public class CustomEditItemTemplate : ITemplate
{
private DataControlRowType templateType;
private string columnName;
public CustomEditItemTemplate(DataControlRowType type, string colname)
{
this.templateType = type;
this.columnName = colname;
}
public void InstantiateIn(System.Web.UI.Control container)
{
TextBox tb = new TextBox();
tb.ID = columnName;
tb.DataBinding += new EventHandler(this.tb_DataBinding);
container.Controls.Add(tb);
}
private void tb_DataBinding(Object sender, EventArgs e)
{
TextBox t = (TextBox)sender;
DetailsView dv = (DetailsView)t.NamingContainer;
//This line does only one way binding. It takes the rows from the database and displays
//them in the textboxes. The other way binding is not done. This is why my code fails
t.Text = DataBinder.Eval(dv.DataItem, columnName).ToString();
}
}
J'appelle la classe ci-dessus comme suit
tf = new TemplateField();
tf.HeaderText = "My First Names";
tf.EditItemTemplate = new CustomEditItemTemplate(DataControlRowType.DataRow, "firstName");
dvModify.Fields.Add(tf);
Comment puis-je faire de la zone de texte tel que, lorsque je modifie le texte, ce changement se reflète dans la base de données ainsi que?
Merci pour votre temps tout le monde