将值分配给Grid中的DropDownList

时间:2011-11-02 21:58:45

标签: c# asp.net

我在网格中有一个DropDownList,我有一个foreach循环,循环遍历一个Query并匹配数据并填充下面的每一行的下拉列表。但它将数据全部放在同一个下拉列表中。因此,第1行,第2行,第3行等都会合并到下拉列表中。我试图在第1行中这样做.dropdlownlist有第1行和第2行的信息,dropdownlist有第2行的信息,依此类推。

到目前为止,我有这个:

protected void grdExceptions_ItemDataBound(object sender, GridItemEventArgs e)
  {
    var linqContext = new DataClassesDataContext();
    var sessionleads = from q in linqContext.Leads where q.SessionID == SessionId orderby q.RowIndex select q;

    if (e.Item is GridDataItem)
      {
        foreach(var p in sessionleads)
          {
            var lQuery = (from a in gServiceContext.CreateQuery("account") where (a["name"].Equals(p.AccountName) &&
                                         a["address1_postalcode"].Equals(p.ZipCode) &&
                                         a["address1_stateorprovince"].Equals(p.State)) ||
                                        (a["address1_line1"].Equals(p.Address1) &&
                                         a["address1_postalcode"].Equals(p.ZipCode) &&
                                         a["address1_city"].Equals(p.City))
          select new
          {
            Name = !a.Contains("name") ? string.Empty : a["name"]
          });
          foreach (var a in lQuery)
            {
              ((e.Item as GridDataItem)["Account"].FindControl("AccountList") as DropDownList).Items.Add(new ListItem(a.Name.ToString()));
            }
          }
    }
  }

我在Grid的ItemTemplate中有一个DropDownlist。因此,对于第一行,我希望找到分配给第一行下拉列表的匹配项,对于第二行,我希望匹配第二行中的下拉列表等等。

我做错了什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

当ItemDataBound为每个新行触发时,似乎你期望SessionId以某种方式变得不同,但它只是保持不变。您是否有其他可以添加到where子句的过滤条件?或者某种方式为每个新行更新SessionId?