У меня есть DataGrid, который отображает информацию о трейлерах. Я решил изменить столбец местоположения на DropDownList, чтобы местоположение можно было легко изменить. Но я не уверен, как заполнить DropDownList.Как заполнить DropDownList в DataGrid?
<asp:DataGrid runat="server" CssClass="tblResults" OnItemDataBound="dgList_ItemCreated" OnRowDataBound="OnRowDataBound" AllowSorting="true" OnSortCommand="dgTrailer_Sort" ID="dgTrailers" DataKeyField="ID" AutoGenerateColumns="false">
<Columns>
<asp:BoundColumn DataField="TrailerOwner" HeaderText="Owner" SortExpression="TrailerOwner"></asp:BoundColumn>
<asp:BoundColumn DataField="TrailerMake" HeaderText="Trailer Make" SortExpression="TrailerMake"></asp:BoundColumn>
<asp:TemplateColumn HeaderText="Trailer Location">
<itemtemplate>
<asp:DropDownList ID="ddlLocation" runat="server">
</asp:DropDownList>
</itemtemplate>
</asp:TemplateColumn>
</Columns>
</asp:DataGrid>
У меня есть DropDownList для местоположенияуже (так называемый ddlTrailerLocation), так что пользователь может выбрать место для трейлера, а затем DataGrid отображает всю эту информацию.
protected void PopulateDDLs()
{
DataSet dsTrailerLocation = DataUtils.GetAllGenSmall(Company.Current.CompanyID, "Description", "", 1, false, "Description", false, "TrailerLocationNOCODE", 0);
if (dsTrailerLocation.Tables[0].Rows.Count > 0)
{
ddlTrailerLocation.DataSource = dsTrailerLocation;
ddlTrailerLocation.DataValueField = "Description";
ddlTrailerLocation.DataTextField = "Description";
ddlTrailerLocation.DataBind();
ddlTrailerLocation.Items.Insert(0, new ListItem("Select One", "0"));
}
else
{
ddlTrailerLocation.Items.Insert(0, new ListItem("No Locations Entered", "0"));
}
}
protected void dgList_ItemCreated(object sender, DataGridItemEventArgs e)
{
DropDownList ddlTrailerLocation = e.Item.FindControl("ddlLocation") as DropDownList;
DataSet dsTrailerLocation = DataUtils.GetAllGenSmall(Company.Current.CompanyID, "Description", "", 1, false, "Description", false, "TrailerLocationNOCODE", 0);
if (ddlTrailerLocation != null)
{
ddlTrailerLocation.DataSource = dsTrailerLocation;
ddlTrailerLocation.DataValueField = "Description";
ddlTrailerLocation.DataTextField = "Description";
ddlTrailerLocation.DataBind();
}
}
EDIT Добавлен код в защищенной недействительным dgList_ItemCreated. В раскрывающемся списке отображается местоположение, но это неправильное местоположение. {
вы гугл первый? –
Да, но я не знаю, что делать, потому что выпадающий список уже существует, поэтому я должен был предоставить новый dropdownlist в datagrid другой идентификатор. Я не уверен, какой код C# мне нужно заполнить. – user2026041
Вы можете указать любой идентификатор имени в виде сетки и получить доступ с другим именем псевдонима в событии строки databound. вот пример http://www.aspsnippets.com/Articles/How-to-populate-DropDownList-in-GridView-in-ASPNet.aspx –