【问题标题】:Can't get DropDownList value shown in FormView ItemTemplate to appear in EditItemTemplate by default默认情况下,无法让 FormView ItemTemplate 中显示的 DropDownList 值出现在 EditItemTemplate 中
【发布时间】:2013-11-26 14:40:30
【问题描述】:

我在表单视图中有一个编辑按钮和一个下拉列表。我正在使用 Linq To Entities 来获取我需要使用的数据,并且在填充和查看 formview itemtemplate 时没有问题。

但是,下拉列表控件 (id="ddlEligibility") 仅在edititemtemplate 中(我使用itemtemplate 中的文本框来显示当前值)并且在获取项目模板中最初显示的值时遇到问题显示edititemtemplate时出现。我现在得到的只是显示第一个值的下拉列表。我希望 itemtemplate 中的值默认显示,并且用户可以根据需要更改它。这是填充下拉列表的代码。有人有什么建议吗?

protected void btnEdit_Click(object sender, EventArgs e)
{
    fvSubscriber.ChangeMode(FormViewMode.Edit);
    fvSubscriber.DataBind(); 

    LifeLineDSEntities context = new LifeLineDSEntities():

    var program = from p in context.EligibilityPrograms
                  select p;

    DropDownList ddlEligibility = (DropDownList)(fvSubscriber.FindControl("ddlEligibility")));

    if (ddlEligibility != null)
    {
        ddlEligibility.DataSource = program;
        ddlEligibility.DataTextField = "ProgramName";
        ddlEligibility.DataValueField = "eligibilityCode";
        ddlEligibility.DataBind();
    }
}

FormView 中的DropDownlist...

<form id="form1" runat="server">
    <asp:FormView ID="fvSubscriber" runat="server" RenderOuterTable="false" DefaultMode="Readonly" OnModeChanging="fvSubscriberChanging">
        <ItemTemplate>
           <asp:TextBox ID="txtEligibility" runat="server" Text='<%# Eval("ProgramName") %>' />
        </ItemTemplate>
        <EditItemTemplate>
            <asp:DropDownList ID="ddlEligibility" runat="server" />
        </EditItemTemplate>
    </asp:FormView>
</form>

【问题讨论】:

  • 你能告诉我 ItemTemplate 中你的文本框绑定的行吗?
  • @Bhavesh Kachhadiya 我添加了文本框

标签: c# asp.net linq webforms


【解决方案1】:

您可以在更改表单视图模式之前尝试获取文本框的值。

    TextBox txtEligibility= (TextBox)fvSubscriber.FindControl("txtEligibility");

    fvSubscriber.ChangeMode(FormViewMode.Edit);
    fvSubscriber.DataBind(); 

    LifeLineDSEntities context = new LifeLineDSEntities():

    var program = from p in context.EligibilityPrograms
                  select p;

    DropDownList ddlEligibility = (DropDownList)(fvSubscriber.FindControl("ddlEligibility")));

    if (ddlEligibility != null)
    {
        ddlEligibility.DataSource = program;
        ddlEligibility.DataTextField = "ProgramName";
        ddlEligibility.DataValueField = "eligibilityCode";
        ddlEligibility.DataBind();
        if (txtEligibility != null)
        {
            if(!string.IsNullOrWhiteSpace(txtEligibility.Text))
            {
                foreach (ListItem item in ddlEligibility.Items)
                {
                    if (item.Text == txtEligibility.Text)
                    {
                        ddlEligibility.SelectedValue = txtEligibility.Text;
                    }
                }
            }
        }
    }

【讨论】:

  • 感谢您的反馈。我最终将文本框值保存到全局变量中,然后在编辑模式下将其分配给我的下拉列表。现在我必须做一些类似的事情来分配用户在编辑模式下单击保存时选择的值。也许这只是我对 asp.net 的缺乏经验,但似乎这应该更容易做到。
  • 是的,它应该更容易一些,因为它通常只涉及在为您的表单视图调用更新方法时从 ddlEligilibity.SelectedItem.Text/Value 获取值:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-28
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 2015-07-08
  • 1970-01-01
相关资源
最近更新 更多