3

データ ソースのタイプが無効です。IListSource、IEnumerable、または IDataSource のいずれかである必要があります。グリッド ビューをバインドするとエラーが表示される

var list = dal.GetEmployeebyName(name);
GridViewEmployee.DataSource = list;
GridViewEmployee.DataBind();

私はクエリを持っています

public EmployeeInfo GetEmployeebyName(String name)
{
    using (var context = new HRMSEntities())
    {
        return context.EmployeeInfo.FirstOrDefault(e => e.FName == name);
    }
}
4

3 に答える 3

5

GetEmployeebyName メソッドから単一のオブジェクトを返し、それを GridViewEmployee にバインドしているため、エラーが発生しています。

のように変更できます。

var empInfo = dal.GetEmployeebyName(name);
var list = new List<EmployeeInfo>{empInfo};

//or you can do this 
//var list = new List<EmployeeInfo>();
//list.Add(empInfo);

GridViewEmployee.DataSource = list;
GridViewEmployee.DataBind();

例外が述べているように、DataSource はコレクションのタイプである必要があります (IListSource、IEnumerable、または IDataSource のいずれかである必要があります)。

于 2012-08-01T07:07:45.530 に答える
1

上記は短縮できませんか..

var empInfo = dal.GetEmployeebyName(name);

GridViewEmployee.DataSource = empInfo.ToList();
GridViewEmployee.DataBind();
于 2013-03-28T09:47:58.850 に答える
1

私のテスト ページでは、次のコードを使用して、さまざまなオブジェクトのリストまたは同じグリッドビュー内の 1 つのオブジェクトだけを表示します。

   var data = bl.getAirlines();
   // If single object returned cast to List
   // Note that could be already a list of 1 item though!
    if (data.Count == 1)
    {
        var list = new List<object> { data };               
        GridView1.DataSource = list;
    }
    else
     // Bind to list of items returned
        GridView1.DataSource = data;

    GridView1.DataBind();

それが役に立てば幸い!わたしにはできる :)

于 2014-09-23T09:52:20.143 に答える