【问题标题】:Losing detailsview dropdownlist values after postback回发后丢失 detailsview 下拉列表值
【发布时间】:2014-06-17 08:42:39
【问题描述】:

我在 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 中填充 DDL:

protected 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 会丢失它的值。我已经尝试对详细信息视图进行数据绑定,但是这些值根本不会加载。

BindDropDownList 方法第一次在 Page_Load 中运行良好。还尝试将方法调用放在 !IsPostBack 之外以始终填充它,但这也不起作用。

我检查了 GetPaperFutures() 并且每次都运行良好,所以问题出在其他地方,但我找不到。

【问题讨论】:

  • 清除数据源重新绑定!
  • 尝试在 Page_Load 中使用 ddl.Items.Clear 但仍然不起作用
  • 不是内页加载!同时绑定! ddl.DataSource = null; comboBox1.DataSource = paperFutureList;
  • 尝试在 ddl.DataSource = paperFutureList 之前在 BindDropDownList 中清除它,但仍然无法正常工作。
  • 确保页面和 DropDownList 的 EnableViewState 等于 true

标签: c# asp.net


【解决方案1】:

我遇到了类似的问题。终于,我找到了解决办法!

只需在 Page_PreRender 事件中调用 BindDropDownList() 即可。

成功了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多