2009-02-23 3 views
0

, когда я пытаюсь отобразить результат в gridview с помощью LINQ, я получаю это сообщение об ошибке. «Оба DataSource и DataSourceID определены в« GridView1 ». Удалите одно определение». Я не понимаю, что делать? Вот мой кодпроблема в gridview с 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(); 
} 

ответ

1

Вы устанавливаете свойство DataSourceID в разметке GridView1 к "LinqDataSource1". Это связывает сетку с LinqDataSource, объявленным сразу после GridView. Затем в ShowEmployee() вы устанавливаете свойство DataSource в коде, которое связывает сетку с запросом в этом методе. Вы не можете обойти оба. Удалите DataSourceID в разметке, если вы намерены привязать код.

0

Очистить свойство DataSourceID во время разработки вашей сетки, если вы хотите инициализировать набор данных с использованием кода C#. Я предпочитаю этот подход. В другом случае не инициализируйте набор данных во время выполнения.