我有以下设置
ASPX:
<asp:GridView runat="server" ID="gridRepresentatives" AllowPaging="True" DataKeyNames="Id" OnRowCommand="BtnSubmitCommand" OnRowCreated="GridRepresentativesCreated" CssClass="grid" AutoGenerateColumns="False" Width="100%" EmptyDataText="You don't have rights to manage any organisations.">
<Columns>
<asp:BoundField DataField="Position" HeaderText="Position"/>
<asp:BoundField DataField="Name" HeaderText="Name"/>
<asp:BoundField DataField="Address" HeaderText="Address"/>
<asp:TemplateField HeaderText="Roles">
<ItemTemplate>
<asp:DropDownList runat="server" ID="dropdownRoles" DataMember="Roles" Width="205px">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Action">
<ItemTemplate>
<asp:DropDownList runat="server" ID="dropdownActions" Width="100px">
<asp:ListItem Text="Edit" Value="0"></asp:ListItem>
<asp:ListItem Text="Remove" Value="1"></asp:ListItem>
</asp:DropDownList>
<asp:Button runat="server" CommandName="Submit" ID="btnSubmit" Text="Go"/>
</ItemTemplate>
<ItemStyle CssClass="grid-actions"></ItemStyle>
</asp:TemplateField>
</Columns>
<AlternatingRowStyle CssClass="alternate"></AlternatingRowStyle>
</asp:GridView>
背后的代码:
var client = new RepresentativeManagementServiceClient();
try
{
IEnumerable<Representative> representatives = client.ListRepresentatives("01", _organisationId, role);
gridRepresentatives.DataSource = representatives;
gridRepresentatives.DataBind();
}
catch (Exception ex)
{
lblError.Visible = true;
lblError.Text = ex.Message;
return;
}
finally
{
client.Close();
}
gridview绑定到具有公共属性集的Type Represenative的IEnumerable。我想将IEnumerable Roles属性绑定到gridview模板字段内的下拉列表中。我试图将Datamember设置为属性的名称(角色),但它只是不绑定并且不会抛出任何错误。我怎么能这样做?
答案 0 :(得分:2)
您想要为该下拉列表绑定数据源:
<asp:TemplateField HeaderText="Roles">
<ItemTemplate>
<asp:DropDownList runat="server" ID="dropdownRoles" DataSource='<%# Eval("Roles") %>' Width="205px">
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
答案 1 :(得分:0)
您应该设置DropDownList的SelectedValue
属性。 Intellisence不会出于某种原因显示它,但您可以像这样使用它
<asp:TemplateField HeaderText="Roles">
<ItemTemplate>
<asp:DropDownList runat="server" SelectedValue='<%# Eval("Roles") %>'>
</asp:DropDownList>
</ItemTemplate>
</asp:TemplateField>
但在绑定它之前,你应该用可能的值填充DropDown。 Manualy或使用一些
数据源(我认为ObjectDataSource
对你来说会很好)