如,在编辑记录时, 如果页面中有应用到DropDownList控件, 我们通常希望DropDownList控件的SelectedValue为当前记录的值.如下代码所示:HTML
 <asp:DropDownList ID="ddl_Status" runat="server" CssClass="verdana11ptflatbox" Width="90%">
                                                <asp:ListItem Text="- SELECT STATUS -" Value="-1"></asp:ListItem>
                                                <asp:ListItem Text="PENDING" Value="0"></asp:ListItem>
                                                <asp:ListItem Text="OK FOR PROCESS" Value="2"></asp:ListItem>
                                                <asp:ListItem Text="OK FOR ALL" Value="3">                                                
                                                </asp:ListItem>
                                            </asp:DropDownList>.CS
                for (int i = ddl_Status.Items.Count - 1; i >= 0; i--)
                {
                    if (ddl_Status.Items[i].Value.Trim() == sdr["Status"].ToString().Trim())
                    {
                        ddl_Status.Items[i].Selected = true;
                        break;
                    }
                }这样是没有问题的, 
但是如果我是用的级联DropDownList,则每次dropDownList.Items.Count的值都是为1, 就没法让其显示当前记录的值.
HTML:
 HTS Code:<asp:DropDownList ID="ddl_HTS_Code" runat="server" CssClass="verdana10pt">
                                                <asp:ListItem Text="-Select-" Value="-1"></asp:ListItem>
                                            </asp:DropDownList>
                                            <span class="verdana11pt" style="color: Red;">*</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;HTS
                                            SubCode:<asp:DropDownList ID="ddl_HTS_SubCode" runat="server" CssClass="verdana10pt">
                                                <asp:ListItem Text="-Select-" Value="-1"></asp:ListItem>
                                            </asp:DropDownList>
                                            <span class="verdana11pt" style="color: Red;">*</span>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                            HTS Name:<asp:DropDownList ID="ddl_HTS_Name" runat="server" CssClass="verdana10pt">
                                                <asp:ListItem Text="-Select-" Value="-1"></asp:ListItem>
                                            </asp:DropDownList><span class="verdana11pt" style="color: Red;">*</span>
                                            <ajaxToolKit:CascadingDropDown ID="cdd_HTS_Code" runat="server" TargetControlID="ddl_HTS_Code"
                                                Category="HTS_Code" PromptText="-Select-" LoadingText="[Loading data...]" ServicePath="HTS.asmx"
                                                ServiceMethod="Get_HTS_Code">
                                            </ajaxToolKit:CascadingDropDown>
                                            <ajaxToolKit:CascadingDropDown ID="cdd_HTS_SubCode" runat="server" TargetControlID="ddl_HTS_SubCode"
                                                Category="HTS_SubCode" PromptText="-Select-" LoadingText="[Loading data...]"
                                                ServicePath="hTS.asmx" ServiceMethod="Get_HTS_SubCode" ParentControlID="ddl_HTS_Code">
                                            </ajaxToolKit:CascadingDropDown>
                                            <ajaxToolKit:CascadingDropDown ID="cdd_HTS_Name" runat="server" TargetControlID="ddl_HTS_Name"
                                                Category="HTS_Name" PromptText="-Select-" LoadingText="[Loading data...]" ServicePath="HTS.asmx"
                                                ServiceMethod="Get_HTS_Name" ParentControlID="ddl_HTS_SubCode">
                                            </ajaxToolKit:CascadingDropDown>.cs
  for (int i = ddl_HTS_Code.Items.Count - 1; i >= 0; i--)
                {
                    if (ddl_HTS_Code.Items[i].Text.Trim() == sdr["HTS_Code"].ToString().Trim())
                    {
                        ddl_HTS_Code.Items[i].Selected = true;
                        break;
                    }
                }
                for (int i = ddl_HTS_SubCode.Items.Count - 1; i >= 0; i--)
                {
                    if (ddl_HTS_SubCode.Items[i].Text.Trim() == sdr["HTS_SubCode"].ToString().Trim())
                    {
                        ddl_HTS_SubCode.Items[i].Selected = true;
                        break;
                    }
                }
                for (int i = ddl_HTS_Name.Items.Count - 1; i >= 0; i--)
                {
                    if (ddl_HTS_Name.Items[i].Text == sdr["HTS_Name"].ToString().Trim())
                    {
                        ddl_HTS_Name.Items[i].Selected = true;
                        break;
                    }
                }这样子则没办法绑定到数据,因为DropDownList.Items.Count的值永远都是1(实际上DropDownList中有很多项的),该如何解决.

解决方案 »

  1.   

    string ddlSelectText=sdr["Status"].ToString().Trim();
    DDl.DataBind();
    DDl.selectIndex=-1;
    DDl.Item.FindByText(ddlSelectText).selected=true;不用写循环
      

  2.   

    DDl。Items.FindByValue(需要选值项).Selected = true;
      

  3.   

    不大怎么明白楼主的意思
    级联的话,需要postback吧?
    或者在page_load里面绑定了每个dropdownlist的值吗?
    你直接获取selectedValue不可以吗?
      

  4.   


    绑联DropDownList的DataSource没有问题, 也有数据.
    我的意思是,我在编辑一条记录时, 我希望DropDownList中显示当前这笔记录的值.而不是"-Select-".
      

  5.   

    你是不是在page_load的时候没有 ispostback 判断呀?
    你的题目不是很清楚呀
      

  6.   


    有使用if(!IsPostBack)的
      if (!IsPostBack)
            {
                if (Request.QueryString["Style_Sheet_Id"] == null)
                {
                    lbl_Title.Text = "Style Sheet Management - Create Style Sheet";
                    lbl_Issue_Date.Text = DateTime.Now.ToShortDateString();
                    lbl_Issuer.Text = Request.Cookies["Login"]["FullName"];
                }
                else
                {
                    lbl_Title.Text = "Style Sheet Management - Edit Style Sheet";
                    fill_PageInfo(int.Parse(Request.QueryString["Style_Sheet_Id"]));
                }
            }
      

  7.   


    string ddlSelectText = sdr["Status"].ToString().Trim();
    ddl.DataBind();
    ddl.SelectIndex = -1;
    if(ddl.Item.FindByText(ddlSelectText) != null)
    {
        ddl.Item.FindByText(ddlSelectText).Selected = true;
    }
      

  8.   

    public void showType() 
        {
            string sql = "select A_Id,A_Title  from Blog_Album where U_Id=" + U_Id;
            DataSet ds = whb147.SQLServerDAL.DbHelperSQL.Query(sql, "Blog_Album");
            Dll_Album.DataSource = ds.Tables["Blog_Album"];
            Dll_Album.DataValueField = "A_Id";
            Dll_Album.DataTextField = "A_Title";
            Dll_Album.DataBind();
        }这么简单的绑定
      

  9.   

    ddlst.datasource=datatable;
    ddlst.DataTextField = "name";
    ddlst.DataValueField = "id";
    ddlst.databind();
    ddlst.selectindex=ddlst.items.indexof(ddlst.items.findbyvalue("value"));
    ddlst.selectindex=ddlst.items.indexof(ddlst.items.findbytext("text"));应该可以吧
      

  10.   


    如何做, 如果单一的用DataBind(), 好像不是很妥,