2009-02-23 2 views
0

lorsque j'essaie d'afficher le résultat dans gridview en utilisant LINQ je reçois ce message d'erreur. "DataSource et DataSourceID sont définis sur" GridView1 "Supprimer une définition." Je ne comprends pas quoi faire? Voici mon codeproblème dans gridview avec LINQ

protected void SelectBtn_Click(object sender, EventArgs e) 
{ 
    ShowEmployee(); 
} 
private void ShowEmployee() 
{ 
    DataClassesDataContext db = new DataClassesDataContext(); 
    var name = from E in db.Employees 
       orderby E.Age ascending 
       select E; 
    GridView1.DataSource = name; 
    GridView1.DataBind();   
} 
protected void InsertBtn_Click(object sender, EventArgs e) 
{ 
    int id = Convert.ToInt32(TxtId.Text); 
    string name = TxtName.Text; 
    string address = TxtAddress.Text; 
    int age = Convert.ToInt32(TxtAge.Text); 
    DataClassesDataContext db = new DataClassesDataContext(); 
    try 
    { 
     Employee emp = new Employee { EmployeeId = id, Name = name, Address = address, Age = age }; 
     db.Employees.InsertOnSubmit(emp); 
     db.SubmitChanges(); 
     LblMessage.Text = "Employee has been added successfully"; 
     TxtId.Text = ""; 
     TxtName.Text = ""; 
     TxtAddress.Text = ""; 
     TxtAge.Text = ""; 
     ShowEmployee(); 
    } 
    catch (Exception ee) 
    { 
     LblMessage.Text = ee.Message.ToString(); 
    }  
} 
protected void UpdateBtn_Click(object sender, EventArgs e) 
{ 
    string name=TxtName.Text; 
    string address=TxtAddress.Text; 
    DataClassesDataContext db = new DataClassesDataContext(); 
    Employee emp = db.Employees.FirstOrDefault(E => E.Name.StartsWith(name)); 
    emp.Address = address; 
    db.SubmitChanges(); 
    ShowEmployee(); 
} 
protected void DeleteBtn_Click(object sender, EventArgs e) 
{ 
    DataClassesDataContext db = new DataClassesDataContext(); 
    Employee emp = db.Employees.Single(E => E.Address.StartsWith("Delhi")); 
    db.Employees.DeleteOnSubmit(emp); 
    db.SubmitChanges(); 
    ShowEmployee(); 
} 

Répondre

1

Vous définissez la propriété DataSourceID dans le balisage de GridView1 à "LinqDataSource1". Cela lie la grille au LinqDataSource déclaré juste après le GridView. Ensuite, dans ShowEmployee() vous définissez la propriété DataSource dans le code, qui lie la grille à la requête dans cette méthode. Vous ne pouvez pas faire les deux. Supprimez le DataSourceID dans le balisage si vous avez l'intention de lier dans le code.

0

Effacer la propriété DataSourceID au moment de la conception de votre grille si vous souhaitez initialiser le jeu de données à l'aide du code C#. Je préfère cette approche. Dans les autres cas, n'initialisez pas le jeu de données en cours d'exécution.