【问题标题】:Populate a dropdownlist with objectdatasource使用 objectdatasource 填充下拉列表
【发布时间】:2016-05-12 16:25:06
【问题描述】:

我正在尝试以编程方式使用 objectdatasource 填充下拉列表。这是一个用户控件,所以在我的 ascx 中有这个:

    <asp:ObjectDataSource ID="odsFicheros" runat="server" 
                        OldValuesParameterFormatString="original_{0}" 
                        onselecting="odsFicheros_Selecting" SelectMethod="ejecutaconsultaFicheros" TypeName="DatosGW.ControlBuscador">

    </asp:ObjectDataSource>

     <asp:DropDownList ID="cmbFicheros" runat="server" CssClass="form-control" 
                         DataTextField="fichero" DataValueField="fichero" DataSourceID="odsFicheros" 
                        ondatabound="cmbFicheros_DataBound" AutoPostBack="True" 
                        onselectedindexchanged="cmbFicheros_SelectedIndexChanged">
      </asp:DropDownList>

在我这样做的代码后面:

  protected void Page_Load(object sender, EventArgs e)
   {



    odsFicheros.TypeName = "DatosGW.ControlBuscador";
    odsFicheros.SelectMethod = "ejecutaconsultaFicheros";
    Parameter consultas = new Parameter(consulta, TypeCode.String);
    odsFicheros.SelectParameters.Add(consultas);
    odsFicheros.DataBind();

    cmbFicheros.DataSource = odsFicheros;

    this.ejecutarConsulta();
}

最后在我的 ControlBuscador 类上,我有返回数据表的方法,但它不起作用,为什么?如果您需要更多详细信息,请告诉我。

【问题讨论】:

  • 您是否随时调用 cmbFicheros.DataBind() ?如果您没有在其他地方这样做,您可能还需要设置它的 DataTextField 和 DataValueField。
  • 如果我这样做,我有这个:两个 DataSource 都是 DataSourceID 都在“cmbFicheros”中定义。删除一个定义。
  • 啊,我明白了,你已经在你的 ascx 中设置了它。不习惯在程序化方法中看到这一点,所以我略过它。如果您从 ascx 中删除 DataSourceID="odsFicheros" 并在代码隐藏中删除 DataBind,会发生什么?
  • 我做到了,但什么也没做。它不起作用

标签: c# asp.net objectdatasource


【解决方案1】:

在 Visual Studio 中,我使用 Selectin 属性上的向导执行此操作:

 e.InputParameters["consulta"] = hfConsulta.Value; 

我用我想要的参数创建了一个 HiddenField,所以现在它可以工作了

【讨论】:

    猜你喜欢
    • 2018-09-14
    • 2014-12-18
    • 2012-11-07
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多