【问题标题】:DropDown selected value doesn't work with int type valuesDropDown 选定值不适用于 int 类型值
【发布时间】:2013-10-01 08:00:26
【问题描述】:

我的 asp.net 项目中有这样的课程:

  public class CenterInfo
    {
        public int ID { get; set; }
        public string CenterName { get; set; }
    }

我有一个下拉列表(包含DataTextField="CenterName" DataValueField="ID"),其中有一个CenterInfo 列表作为数据源,我尝试以这种方式在代码后面的下拉列表中选择一个项目:

CenterDropDownList.SelectedValue = Student.CenterID.ToString();

但它不起作用,因为下拉值实际上是 int 类型,而选定的值是 string 类型。我该怎么办?

我的 aspx:

 <asp:DropDownList ID="CenterNameDropDownList" runat="server" CssClass="requestdropdownlist" OnSelectedIndexChanged="CenterNameDropDownList_SelectedIndexChanged" DataTextField="CenterName" DataValueField="ID" ></asp:DropDownList>

和cs:

   CenterNameDropDownList.DataSource = Data.CenterDB.GetCenterByCityId(city.ID);
                CenterNameDropDownList.DataBind();

和相关的渲染html:

  <select name="ctl00$ContentsPlaceHolder$CenterNameDropDownList" id="ContentsPlaceHolder_CenterNameDropDownList" disabled="disabled" class="aspNetDisabled requestdropdownlist">
    <option selected="selected" value="1">سمنان : شهید عاملو</option>
    <option value="2">سمنان : شهید مطهری</option>
    <option value="3">سمنان : حکیم الهی</option>
    <option value="4">سمنان : شهید قندی</option>
    <option value="9">سمنان : جهادیه</option>
    <option value="47">سمنان : اعلاء</option>
    <option value="48">سمنان : اروانه</option>
    <option value="49">سمنان : بیابانک</option>
    <option value="50">سمنان : ایج</option>
    <option value="51">سمنان : خیرآباد</option>
    <option value="52">سمنان : لاسجرد</option>
    <option value="53">سمنان : پایگاه هوایی</option>
    <option value="54">سمنان : شهرک صنعتی سمنان</option>
    <option value="56">سمنان : آبخوری Wll</option>
    <option value="57">سمنان : اعلا Wll</option>
    <option value="58">سمنان : اسدآباد Wll</option>
    <option value="59">سمنان : دلازیان Wll</option>
    <option value="60">سمنان : دزهير Wll</option>
    <option value="61">سمنان : جام Wll</option>
    <option value="62">سمنان : خیرآباد Wll</option>
    <option value="63">سمنان : مومن آباد Wll</option>
    <option value="64">سمنان : افتر</option>
    <option value="65">سمنان : مومن اباد</option>
    <option value="175">سمنان : مهر 1 سمنان</option>
    <option value="177">سمنان : پشتیبانی سیستم جامع</option>
    <option value="182">سمنان : آزمایشی</option>
    <option value="191">سمنان : سمنان - مرکز مهر 2</option>

</select>

【问题讨论】:

  • 你可以设置 SelectedItem 或 SelectedIndex 来代替
  • 这必须工作。或者你得到什么错误?并检查 Student.CenterID 中是否有任何值。让我知道问题
  • 我试过 DropDownList.Items.FindByValue 但也没有用。当我绑定我的下拉列表时,会出现一个错误,指出(例如)CenterDropDownList 没有值为“3”的项目(因为该项目的值是 3 而不是“3”)
  • “但它不起作用”没有提供足够的信息来帮助您。您的代码行应该在 DDL 数据绑定后运行
  • 我解释它得到一个错误,因为我的下拉列表没有一个带有“3”作为值的项目,因为项目的值是 3(int not string);

标签: c# asp.net


【解决方案1】:

我替换这个:

CenterNameDropDownList.DataSource = Data.CenterDB.GetCenterByCityId(city.ID);

用这个:

 foreach (CenterInfo centerInfo in Data.CenterDB.GetCenterByCityId(city.ID))
                {
                    ListItem listitem = new ListItem();
                    listitem.Value = centerInfo.ID.ToString();
                    listitem.Text = centerInfo.CenterName;
                    CenterNameDropDownList.Items.Add(listitem);
                }

行得通,但真的没有别的办法了吗?

【讨论】:

  • 请确认您在设置.DataSource.DataTextField.DataValueField 之后确实调用了CenterNameDropDownList.DataBind()。 (请注意,如果您直接回复非原作者的 SO 中的某个人,您必须将他们的用户名以 @ 符号开头,以便他们收到通知)
  • 能否请您提供如何将 CenterNameDropDownList 与整个代码绑定。Bcoz 我认为这不是绑定下拉列表的好方法。
  • 没问题 - 现在,你能确认一下我问了什么,以及 Jidheesh 也在问什么。如果您声称您正在调用 .DataBind,则您的代码中有一些不正确的地方,但是如果没有看到代码,我们真的无法提供任何帮助
  • @Jidheesh Rajan :我完全使用您的答案代码。请注意,我在同一页面中有另一个下拉菜单,它工作正常。但我不知道为什么这个不工作。
  • 问题是 centerInfoList 不包含 ID=3 的项目。只是为了测试做这个 CenterDropDownList.SelectedValue="3";会看到它的工作原理
【解决方案2】:

CenterDropDownList.SelectedValue = Student.CenterID.ToString();

try
{
   CenterDropDownList.Items.FindByValue(Student.CenterID.ToString()).Selected = true;
}
finally
{

}

【讨论】:

    【解决方案3】:

    希望这是你需要的。

    Student.CenterID = Convert.toInt32(CenterDropDownList.SelectedValue); 
    

    【讨论】:

      【解决方案4】:

      下拉列表不能这样绑定

      CenterDropDownList.DataSource = centerInfoList;
      CenterDropDownList.DataTextField = "CenterName";
      CenterDropDownList.DataValueField = "ID";
      CenterDropDownList.DataBind();
      

      只有在这段代码之后你才能做

      CenterDropDownList.SelectedValue = Student.CenterID.ToString();
      

      或者

      CenterDropDownList.Items.FindByValue(Student.CenterID.ToString()).Selected = true;
      

      并确保 Student.CenterID 的值应该在 CenterDropDownList 的 ID 字段中

      试着告诉我..

      【讨论】:

      • 试试这个.. ddlDistrict.Items.FindByValue("3").Selected = true;
      猜你喜欢
      • 2015-09-23
      • 2017-05-09
      • 2022-01-25
      • 2020-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-21
      • 1970-01-01
      相关资源
      最近更新 更多