回发后丢失detailsview下拉列表值
本文关键字:detailsview 下拉列表 | 更新日期: 2023-09-27 18:08:51
我在detailsview中使用下拉列表,它填充得很好,但是当我做插入时有回发,所以我试图再次绑定DDL,但值不知何故丢失。
我的aspx:
<asp:UpdatePanel ID="InsertPanel" runat="server" UpdateMode="Conditional" >
<ContentTemplate>
<asp:Table ID="Table1" runat="server" CellSpacing="0" CellPadding="0">
<asp:TableHeaderRow SkinID="tableheaderrowSkin">
</asp:TableHeaderRow>
<asp:TableRow>
<asp:TableCell BackColor="DarkGray" BorderColor="DarkGray" BorderWidth="1" Width="300">
<asp:DetailsView ID="DetailsView1" runat="server" AutoGenerateRows="False" DataKeyNames="nFuturesId"
DataSourceID="FutureCommodityODS" DefaultMode="Insert" OnItemInserting="DetailsView1_ItemInserting"
SkinID="detailsviewSkin" OnItemInserted="DetailsView1_ItemInserted" EnableModelValidation="True">
<BrummerComp:SortableDropDownList ID="DropDownListFuturesInsert" runat="server" SkinID="BCdropdownlistSkin">
</BrummerComp:SortableDropDownList>
</asp:DetailsView>
</asp:TableCell>
</asp:TableRow>
</asp:Table>
</ContentTemplate>
</asp:UpdatePanel>
我在Page_Load:
中填充了DDLprotected new void Page_Load(object sender, EventArgs e) {
if (!IsPostBack) {
BindDropDownList();
}
//DetailsView1.DataBind();
}
BindDropDownList:
private void BindDropDownList()
{
var paperFutureList = (List<PaperFutures>)DataManager.GetPaperFutures();
var ddl = (DropDownList)DetailsView1.FindControl("DropDownListFuturesInsert");
ddl.DataSource = paperFutureList;
ddl.DataValueField = "nFuturesID";
ddl.DataTextField = "ShortNameAndFutureNameAndFutureId";
ddl.DataBind();
}
问题是,当我做插入在我的详细信息视图的DDL是失去了它的值。我试过绑定detailsview,但值不会加载在所有。
方法BindDropDownList第一次在Page_Load中工作得很好。我也试过把methodcall放在!IsPostBack之外来填充它,但这也不起作用。
我已经检查了GetPaperFutures(),它每次都能很好地工作,所以问题是在其他地方,但我找不到在哪里。
我也面临着类似的问题。最终,我找到了解决办法!
在page_preender事件中调用BindDropDownList()。
运行成功!