我正在尝试将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>
答案 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;
}
希望以上有所帮助。
崔佛。