将数据绑定到gridview时出错

时间:2014-02-05 18:04:14

标签: c# asp.net web-services gridview

我无法将网络服务中的数据绑定到我的网络应用程序的网格视图中。

错误:

  

在容器中找不到数据项。容器必须实现IDataItemContainer,或者具有名为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。

这是我的网络服务:

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

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

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

请提前帮助我。

P.S。如果我遗漏任何相关信息,请告诉我。

1 个答案:

答案 0 :(得分:0)

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

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