使用LINQ的gridview中的问题

时间:2009-02-23 16:07:04

标签: asp.net linq gridview

当我尝试使用LINQ在gridview中显示结果时,我收到此错误消息。“DataSource和DataSourceID都在'GridView1'上定义。删除一个定义。”我不知道该怎么办?这是我的代码

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

                                                                                    

2 个答案:

答案 0 :(得分:1)

将GridView1的标记中的DataSourceID属性设置为“LinqDataSource1”。这将网格绑定到GridView之后声明的LinqDataSource。然后在ShowEmployee()中,在代码中设置DataSource属性,该属性将网格绑定到该方法中的查询。你不能两者都做。如果要在代码中绑定,请删除标记中的DataSourceID。

答案 1 :(得分:0)

如果要使用C#代码初始化数据集,请在网格的设计时清除DataSourceID属性。我更喜欢这种方法。在其他情况下,不要在运行时初始化数据集。