2014-02-05 177 views
1

我无法将数据从Web服务绑定到我的Web应用程序的网格视图中。将数据绑定到gridview时出错

错误:

A data item was not found in the container. The container must either implement IDataItemContainer, or have a property named DataItem.

这里是我的代码:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     ddlEvent.DataSource = en.getCategory(); 
     ddlEvent.DataTextField = "category"; 
     ddlEvent.DataValueField = "categoryId"; 
     ddlEvent.DataBind(); 
    } 
} 

protected void ddlEvent_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    eventView.DataSource = en.getEvent(ddlEvent.SelectedValue.ToString()); 
    eventView.DataBind(); 
} 

方法getEvent需要一个字符串参数来检索特定的字段中的数据。 对于ddlEvent的DataValueField,这里只有1,2和3

这里是我的web服务:

http://b0ac8787bb664948b10d5374441ce99d.cloudapp.net/MQEntertainment.asmx

的问题是在Web服务中,我输入的参数 '1' GetEvent方法,我有一个输出。但是当它被调用到我的Web应用程序中时,会显示错误。

我试图用一个字符串“1”替换“ddlEvent.SelectedValue.ToString()”,有一个输出。我试图使用“修剪()”,但它根本没有帮助。

请帮助我,在此先感谢。

P.S.如果我错过了任何相关信息,请告诉我。

回答

0

getEvent根据网络服务返回eventList[]。问题是返回的eventList[]可能包含一些空元素,因此您必须在绑定到eventView之前先删除空元素。此代码适用于我:

protected void ddlEvent_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    eventList[] events = en.getEvent(ddlEvent.SelectedValue); 
    eventView.DataSource = events.Where(x => x != null); 
    eventView.DataBind(); 
} 
+0

解决了我的问题!非常感谢! :) –