DataGrid中的一列有DropDownList显示位置,但现在它只显示每行的相同位置,而不是正确的位置。
protected void PopulateDDLs(DropDownList ddlTrailerLoc)
{
DataSet dsTrailerLocation = DataUtils.GetAllGenSmall(Company.Current.CompanyID, "Description", "", 1, false, "Description", false, "TrailerLocationNOCODE", 0);
if (dsTrailerLocation.Tables[0].Rows.Count > 0)
{
ddlTrailerLoc.DataSource = dsTrailerLocation;
ddlTrailerLoc.DataValueField = "Description";
ddlTrailerLoc.DataTextField = "Description";
ddlTrailerLoc.DataBind();
}
else
{
ddlTrailerLoc.Items.Insert(0, new ListItem("No Locations Entered", "0"));
}
}
protected void dgList_ItemCreated(object sender, DataGridItemEventArgs e)
{
DropDownList ddlTrailerLocation = e.Item.FindControl("ddlTrailerLoc") as DropDownList;
if (ddlTrailerLocation != null)
{
PopulateDDLs(ddlTrailerLocation);
}
}
您可以从图片中看到显示位置但仅显示一个位置不正确的位置。如何设置下拉列表以显示正确的位置?
答案 0 :(得分:0)
请参阅以下ASP.NET DropDownList
绑定示例:
<asp:DropDownList ID="cmbCountry" runat="server"
AppendDataBoundItems = "True"
DataSourceID="selectCountrySQL"
DataTextField="Country"
DataValueField="Country_Code"
SelectedValue='<%# Bind("O_CountryCode") %>' >
</asp:DropDownList>
您必须为DataTextField
(例如国家/地区名称)和DataValueField
(e.d。国家/地区代码)指定绑定,如本例所示。
注意这一行:
SelectedValue='<%# Bind("O_CountryCode") %>' >
与您的案例相关,而不是O_CountryCode
它应该是&#34; Trailer Location
&#34; GridView
DataSource
中的字段。
使用您可以创建的值填充DropDownList
并绑定另一个DataSource
(在此示例中为selectCountrySQL
),如下所示:
<asp:SqlDataSource id="selectCountrySQL" runat="server"
SelectCommand="SELECT [Country], [Country_Code]
FROM [Ref_Countries]
ORDER BY [Country]" />
请注意,DropDownList
和GridView
绑定到不同的DataSources
。
希望这可能会有所帮助。