更新GridView组合框不更新

时间:2013-01-25 02:38:14

标签: asp.net entity-framework

我正在尝试将DropDownList(DDL)与我的实体数据源绑定。 GridView(GV)绑定到与DDL不同的EntityDataSource。 GV的EntityDataSource具有关系的导航属性“Bag”。在编辑模式下,我可以选择一个不同的项目,但它不会更新该记录的数据库。我确实使用 include 进行EntityDataSource中的导航。我确定接线不正确。到目前为止,我一直试着没有运气。谢谢你的帮助。

<asp:TemplateField HeaderText="Bag">
  <ItemTemplate >
    <asp:Label ID="lbEditBag" Text='<%#Eval("Bag.Item1") %>' runat="server" />
  </ItemTemplate>
  <EditItemTemplate >
    <asp:DropDownList runat="server" ID="ddlBags" DataSourceID="edsBags" DataTextField="Amount" DataValueField="BagId" />
  </EditItemTemplate>
</asp:TemplateField>

1 个答案:

答案 0 :(得分:0)

DonA,如果你还没有找到你的答案,我会解释我做了什么,做了类似于我相信的事情。

在gridview中我有各种asp:TempleteField,一个是这样的: -

<ItemTemplate>
   <asp:Label ID="lblActive" runat="server" Text='<%# Bind("Active") %>'></asp:Label>
</ItemTemplate>
<EditItemTemplate>
<%--<asp:TextBox ID="txtboxActive" runat="server" Text='<%# Bind("Active") %>'     Width="20px" TextMode="SingleLine" CssClass="textboxEdit"></asp:TextBox>--%>
<asp:DropDownList ID="activeDDL" CausesValidation="False" AutoPostBack="False"     runat="server">                      <asp:ListItem Text="No" Value="0"></asp:ListItem>
<asp:ListItem Text="Yes" Value="1" Selected="True"></asp:ListItem>
   </asp:DropDownList>
</EditItemTemplate>

你可以看到在EditItemTemplete中有两个下拉列表项(我也留下类似的代码,我曾经用它来绑定数据库以获取DDL值,但我不再使用了,因此被注释掉了)

然后是ID,runat =“server”,DataKeyNames等

<asp:Gridview ID=""...

我有

OnRowUpdated="info_GridView_RowUpdated"

然后在SQL函数后面的C#代码中运行,用DDL中的设置更新数据库表,就像这样(我还放了一些其他Gridview.Databind()来重置我的其他gridviews)

protected void info_GridView_RowUpdated(object sender, GridViewUpdatedEventArgs e)
{
    // The update operation was successful. Retrieve the row being edited.
    int index = info_GridView.EditIndex;
    GridViewRow row = info_GridView.Rows[index];
    int itemID = Convert.ToInt32(row.Cells[4].Text); // Cells[4] is only one available as others are being edited!

    // update Active value in the database //
    comm = new SqlCommand("UPDATE Products SET Active=@active WHERE ItemID=@itemID", objConn);
    comm.Parameters.AddWithValue("@active", ddlValue); // this stores DDL value in database
    comm.Parameters.AddWithValue("@itemID", itemID);// Convert.ToInt32(propertyRefTextBox.Text));

    objConn.Open();
    comm.ExecuteNonQuery();
    objConn.Close();

              // force update and reset selectedIndex of other gridviews //
    Category_GridView.DataBind();
    editImages_GridView.DataBind();

    Category_GridView.SelectedIndex = -1;
    editImages_GridView.SelectedIndex = -1;

}

希望以上有所帮助。

崔佛。