如,在编辑记录时, 如果页面中有应用到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> 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>
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中有很多项的),该如何解决.
<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> 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>
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中有很多项的),该如何解决.
DDl.DataBind();
DDl.selectIndex=-1;
DDl.Item.FindByText(ddlSelectText).selected=true;不用写循环
级联的话,需要postback吧?
或者在page_load里面绑定了每个dropdownlist的值吗?
你直接获取selectedValue不可以吗?
绑联DropDownList的DataSource没有问题, 也有数据.
我的意思是,我在编辑一条记录时, 我希望DropDownList中显示当前这笔记录的值.而不是"-Select-".
你的题目不是很清楚呀
有使用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"]));
}
}
string ddlSelectText = sdr["Status"].ToString().Trim();
ddl.DataBind();
ddl.SelectIndex = -1;
if(ddl.Item.FindByText(ddlSelectText) != null)
{
ddl.Item.FindByText(ddlSelectText).Selected = true;
}
{
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();
}这么简单的绑定
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"));应该可以吧
如何做, 如果单一的用DataBind(), 好像不是很妥,