首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在DetailsView中绑定DropDownList

在DetailsView中绑定DropDownList
EN

Stack Overflow用户
提问于 2010-04-23 23:58:10
回答 2查看 11.2K关注 0票数 3

我在尝试从数据库填充下拉列表时遇到了问题。当我尝试设置数据源时,我找不到dropdown控件,它在一个DetailsView中,所以我认为它可能与它只在编辑模式下创建有关。当我在编辑的时候,它仍然显示它处于当前模式,所以我不确定那里发生了什么。

下面是aspx文件中的代码:

代码语言:javascript
复制
<asp:DetailsView id="DetailsView1" runat="server" AutoGenerateRows="false" DataSourceID="myMySqlDataSrc"  DataKeyNames="id" AutoGenerateDeleteButton="True" AutoGenerateEditButton="True" AutoGenerateInsertButton="False" >
     <Fields>
        <asp:TemplateField HeaderText="Region">
            <ItemTemplate><%# Eval("region_name") %></ItemTemplate>
            <EditItemTemplate>
                <asp:DropDownList ID="RegionDropdownList" runat="server" SelectedValue='<%# Bind("region_id")%>' />
            </EditItemTemplate>
        </asp:TemplateField>        
     </Fields>
</asp:DetailsView>

这是来自代码背后的代码:

代码语言:javascript
复制
ArrayList regionsList = BPBusiness.getRegions();
if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
{
    DropDownList ddlRegions = (DropDownList)DetailsView1.FindControl("RegionDropdownList");
    if (ddlRegions != null)
    {
        ddlRegions.DataSource = regionsList;
        ddlRegions.DataBind();
    }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-04-24 00:11:23

如果还没有,请将代码中的示例放在DetailsView1_ModeChanged或DetailsView1_DataBound方法中。如果它在DetailsView1_ModeChanging方法中,那么模式实际上还没有改变。

EDIT:另外,请确保像这样设置DataTextField和DataValueField:

代码语言:javascript
复制
DropDownList1.DataTextField = "TextFieldName";
DropDownList1.DataValueField = "ValueFieldName";

还要删除SelectedValue绑定;它除了抛出错误之外什么也不做。

EDIT 2:如果你真的需要选择下拉列表的一个特定值,当它第一次是数据绑定时,你可以这样做:

代码语言:javascript
复制
if(DropDownList1.Items.Contains(DropDownList1.Items.FindByValue("Value")))
{
    DropDownList1.SelectedIndex = DropDownList1.Items.IndexOf(DropDownList1.Items.FindByValue("Value));
}
票数 3
EN

Stack Overflow用户

发布于 2010-04-24 00:11:16

请尝试在itemcreated方法中执行此操作

代码语言:javascript
复制
protected void DetailsView1_ItemCreated(object sender, EventArgs e)
{
    ArrayList regionsList = BPBusiness.getRegions();
    if (DetailsView1.CurrentMode == DetailsViewMode.Edit)
    {
        DropDownList ddlRegions = (DropDownList)DetailsView1.FindControl("RegionDropdownList");
        if (ddlRegions != null)
        {
            ddlRegions.DataSource = regionsList;
            ddlRegions.DataBind();
        }
    }
}

记得设置OnItemCreated="DetailsView1_ItemCreated"

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2700028

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档