0

我认为这会简单明了,但我似乎遇到了问题。

基本上,我在表单视图中有这个:

 <asp:TextBox ID="StatusTextBox" runat="server" Text='<%# Bind("Status") %>' /> 

我想用这个替换它:

 <asp:DropDownList ID="StatusDropdown" runat="server">
       <asp:ListItem Selected="True" Value="A">Active</asp:ListItem>
       <asp:ListItem Value="I">Inactive</asp:ListItem>
  </asp:DropDownList>

我不确定如何像绑定文本框一样绑定它。

有直接的答案吗?

4

2 回答 2

1

Codebehind 不是 hack,实际上它是最佳实践,因为您拥有完全的控制和编译器支持(在编译时显示错误并避免粗心的错误)

例如(假设DropDownList位于 中EditItemTemplate):

private void FormView1_DataBound(object sender, System.EventArgs e)
{
    switch (FormView1.CurrentMode)
    {
        case FormViewMode.ReadOnly:
            break;
        case FormViewMode.Edit:
            // note that the DataSource might be a different type
            DataRowView drv = (DataRowView)FormView1.DataSource;
            DropDownList StatusDropdown = (DropDownList)FormView1.FindControl("StatusDropdown");
            // you can also add the ListItems programmatcially via Items.Add
            StatusDropdown.DataSource = getAllStatus(); // a sample method that returns the datasource
            StatusDropdown.DataTextField = "Status";
            StatusDropdown.DataValueField = "StatusID";
            StatusDropdown.DataBind();
            StatusDropdown.SelectedValue = drv["StatusID"].ToString();
            break;
        case FormViewMode.Insert:
            break;
    }
}
于 2013-05-07T15:46:57.597 回答
1

将其绑定到 SelectedValue 属性,如下所示:

 <asp:DropDownList ID="StatusDropdown" runat="server" SelectedValue='<%# Bind("Status") %>'>

status 中的值必须与下拉列表项的值匹配。

于 2013-05-07T15:43:02.800 回答