动态绑定下拉控件的选择

Dynamically binding a dropdown control's selection

我有一个主页,我在其中通过 <asp:Repeater.../> 控件创建了 div。现在,在 <div> 按钮上的点击事件上,我将页面重定向到我有 <asp:DropDown.../> 控件的注册表单。

在注册页面的 Page_Load 事件中,我从数据库填充下拉列表并设置 DataTextFieldDataValueField

现在我将 EventTypeID 分配给 dropdown.DataValueField,将 Name 分配给 dropdown.DataTextField。我还检查了渲染时的下拉列表是否包含 value 字段中的 EventTypeID..

这是代码:

protected void Page_Load(object sender, EventArgs e)
    {
        EventTypeLogic eventTypeLogic = new EventTypeLogic();
        int eventTypeID = Convert.ToInt32(Request.QueryString["Id"]);

        ddlEventType.DataSource = eventTypeLogic.populateEventTypeDDL();
        ddlEventType.DataValueField = "EventTypeID";
        ddlEventType.DataTextField = "Name";
        ddlEventType.DataBind();
        ddlEventType.Items.Insert(0, new ListItem("Select Event Type", "0"));

        if (eventTypeID > 0)
        {
            ddlEventType.SelectedIndex = eventTypeID;
        }
    }

DropDown aspx 代码:

<asp:DropDownList ID="ddlEventType" runat="server" CssClass="span2 form-info" />

主页代码:

</p><h6><a class="btn btn-custom" href='<%# "HostEvent.aspx?ID=" + Eval("EventTypeID") %>' ><b>host event</b></a></h6> 

问题:我希望下拉列表应该根据主页上的选择预先选择值。

更新:

protected void Page_Load(object sender, EventArgs e)
    {
        EventTypeLogic eventTypeLogic = new EventTypeLogic();
        int eventTypeID = Convert.ToInt32(Request.QueryString["Id"]);

        string name = eventTypeLogic.resolveToName(eventTypeID);

        ddlEventType.DataSource = eventTypeLogic.populateEventTypeDDL();
        ddlEventType.DataValueField = "EventTypeID";
        ddlEventType.DataTextField = "Name";
        ddlEventType.Items.Insert(0, new ListItem("Select Event Type", "0"));
        //ddlEventType.DataBind();


        ddlEventType.SelectedIndex = eventTypeID;
        ddlEventType.DataBind();

    }

如果您希望 EventName 应该显示为您的 Ddl 中的预选值,而不是仅仅使用 eventTypeId 触发查询并获取该事件的所有信息并尝试此操作.

// i suppose when you fire query you get an Object `EventDetails`
if (eventTypeID > 0)
        {
            ddlEventType.SelectedIndex = eventTypeID;
ddlEventType.SelectedValue = EventDetails.EventTypeID.ToString();
        }

这应该有效!