0

我正在尝试将 DropDownList(DDL) 与我的实体数据源绑定。GridView(GV) 绑定到与 DDL 不同的 EntityDataSource。GV 的 EntityDataSource 具有用于关系的导航属性“Bag”。在编辑模式下,我可以选择不同的项目,但它不会更新该记录的数据库。我确实将包含用于 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>
4

1 回答 1

0

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

在网格视图中,我有各种 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() 来重置我的其他网格视图)

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;

}

希望以上有所帮助。

特雷夫。

于 2013-06-06T22:40:48.207 回答