在我的应用程序中,我有一个Grid。网格有一些字段,如绑定字段,模板字段,复选框。 我的问题是我想用数据源中的一个绑定字段和一个Dropdown填充网格。
<asp:GridView ID="grdSetupBillingDetails" OnRowDataBound="grdSetupBillingDetails_OnRowDataBound" AutoGenerateColumns="False" runat="server" Width="100%">
<Columns>
<asp:TemplateField HeaderText="Check AssetSubType" SortExpression="CheckAssetSubType">
<ItemStyle HorizontalAlign="Center" Width="100px" />
<ItemTemplate>
<asp:CheckBox ID="chkAssetSubType" runat="server" Checked='<%# Eval("ActiveFlag")%>' />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Name" HeaderText="AssetSubType">
<HeaderStyle HorizontalAlign="Center" Width="150px" />
<ItemStyle HorizontalAlign="center" Width="150px" />
</asp:BoundField>
<asp:templatefield headertext="Bill Period">
<itemtemplate>
<asp:dropdownlist runat="server" id="cboBillPeriod"></asp:dropdownlist>
</itemtemplate>
</asp:templatefield>
<asp:TemplateField HeaderText="Fees" HeaderStyle-HorizontalAlign="Center" SortExpression="Fees">
<ItemTemplate>
<asp:TextBox ID="txtFees" runat="server" Text='<%# Bind("Fees") %>' Style="width: 100px;
text-align: left;" MaxLength="12"></asp:TextBox>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
任何人请帮帮我。
答案 0 :(得分:2)
您必须在RowDatabound事件上找到下拉列表,并将数据源分配到那里的下拉列表。
protected void grdSetupBillingDetails_RowDataBound(object sender, GridViewRowEventArgs e)
{
DropDownList cboBillPeriod = (DropDownList)e.Row.FindControl("cboBillPeriod");
if (null != cboBillPeriod)
{
//Your combobox bind Code
//cboBillPeriod.DataSource = dt;
//cboBillPeriod.DataBind();
}
}
答案 1 :(得分:0)
正如Abhishek建议的那样,RowDataBound事件会起作用。如果要将绑定直接绑定到下拉列表而不是网格,则可以将下拉列表绑定到数据源(例如,ObjectDataSource,EntityDataSource),如果您在应用程序中使用数据源。然后它会在每次渲染时绑定。
如果您不使用数据源,则可以填写下拉列表的Initi事件中的数据。类似的东西:
网络表单:
<asp:dropdownlist runat="server" id="cboBillPeriod" OnInit="cboBillPeriod_Init" />
代码背后:
protected void cboBillPeriod_Init(object sender, EventArgs e)
{
DropDownList cboBillPeriod = (DropDownList)sender;
if (null != cboBillPeriod)
{
//Your combobox bind Code
//cboBillPeriod.DataSource = dt;
//cboBillPeriod.DataBind();
}
}