PDA

View Full Version : خطا در بایند کردن DropDownList در GridView



HamidiFar
دوشنبه 10 بهمن 1390, 11:40 صبح
سلام به یک مشکل در گرید برخورد کردم لطفا کمک کنید

وقتی رو دگمه Edit کلیک میکنم این Error رو میگیره :

'cboProduct' has a SelectedValue which is invalid because it does not exist in the list of items. Parameter name: value

کد گرید :

<asp:GridView ID="gvDeliveryList" runat="server" DataKeyNames="OrderID" AutoGenerateColumns="False"
AutoGenerateEditButton="True" OnRowDataBound="gvDeliveryList_RowDataBound"
OnRowEditing="gvDeliveryList_RowEditing">
<Columns>

<asp:TemplateField HeaderText="Order">
<ItemTemplate>
<%# Eval("OrderNo") %>
</ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="txtOrderNo" runat="server" Text='<%# Eval("OrderNo") %>'></asp:TextBox>
</EditItemTemplate>
</asp:TemplateField>

<asp:TemplateField HeaderText="Product">
<ItemTemplate>
<%# Eval("ProductID") %>
</ItemTemplate>
<EditItemTemplate>
<asp:DropDownList ID="cboProduct" runat="server" SelectedValue='<%# Bind("ProductId") %>'>
</asp:DropDownList>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>

Code Behind :

protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
BindGrid();
}

void BindGrid()
{
try
{
gvDeliveryList.DataSource = Controller.GetOrderList();
gvDeliveryList.DataBind();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}

}

protected void gvDeliveryList_RowEditing(object sender, GridViewEditEventArgs e)
{
gvDeliveryList.EditIndex = e.NewEditIndex;
BindGrid();
}

protected void gvDeliveryList_RowDataBound(object sender, GridViewRowEventArgs e)
{
try
{
if (e.Row.RowType == DataControlRowType.DataRow &&
gvDeliveryList.EditIndex == e.Row.RowIndex )
{
DropDownList cbo = e.Row.FindControl("cboProduct") as DropDownList;

IList<Product> products = Controller.GetProductList();

foreach (Product product in products)
{
ListItem listItem = new ListItem(product.ProductNo, Convert.ToString(product.ProductId));
if (cbo != null) cbo.Items.Add(listItem);
}
}
}
catch (Exception ex)
{
Response.Write(ex.Message);
}

}
کد کلاس Controller :

public static IList<Order> GetOrderList()
{
context = new Entities();
return (from o in context.Orders select o).ToList();
}


public static IList<Product> GetProductList()
{
context = new Entities();
return (from p in context.Products
where p.Active == true
orderby p.ProductNo
select p).ToList();
}

HamidiFar
سه شنبه 11 بهمن 1390, 08:42 صبح
نبود !!!! :گریه: