DropDownList在DataGrid中没有显示正确的值

时间:2015-06-08 15:02:01

标签: c# asp.net visual-studio drop-down-menu

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);
             }
        }

您可以从图片中看到显示位置但仅显示一个位置不正确的位置。如何设置下拉列表以显示正确的位置?

enter image description here

1 个答案:

答案 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]" />   

请注意,DropDownListGridView绑定到不同的DataSources

希望这可能会有所帮助。