4 asp.net gridview datagridview
我有一个网格,我尝试将下拉列表绑定到FooterTemplate和EdiItemTemplate.
<asp:TemplateField HeaderText="Role" SortExpression="Role">
<HeaderStyle Width="100px" HorizontalAlign="Center" Wrap="False"></HeaderStyle>
<EditItemTemplate>
<asp:DropDownList ID="ddlRole" runat="server">
</asp:DropDownList>
</EditItemTemplate>
<FooterTemplate>
<asp:DropDownList ID="ddlFRRole" runat="server">
</asp:DropDownList>
</FooterTemplate>
<ItemTemplate>
<asp:Label ID="lblRole" runat="server" Text='<%# Bind("[Role_Cd]") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
Run Code Online (Sandbox Code Playgroud)
我使用此代码,没有运气.我无法将值绑定到下拉列表.如果我错了,任何人都可以纠正我吗?
protected void UPGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlRole = (DropDownList)e.Row.FindControl("ddlRole");
DropDownList ddlFRRole = (DropDownList)e.Row.FindControl("ddlFRRole");
ddlRole.DataSource = UPRepository.GetRoles();
ddlRole.DataTextField = "Role_Cd";
ddlRole.DataValueField = "Role_Cd";
ddlRole.DataBind();
ddlFRRole.DataSource = UPRepository.GetRoles();
ddlFRRole.DataTextField = "Role_Cd";
ddlFRRole.DataValueField = "Role_Cd";
ddlFRRole.DataBind();
}
}
Run Code Online (Sandbox Code Playgroud)
您应首先检查并RowIndex与EditIndex要编辑的GridView 进行比较,然后将整个代码绑定到下拉列表中.
此外,要在页脚中查找下拉列表,您需要使用条件:
if (e.Row.RowType == DataControlRowType.Footer)
Run Code Online (Sandbox Code Playgroud)
并且,用于连续查找下拉列表使用
if (e.Row.RowType == DataControlRowType.DataRow)
Run Code Online (Sandbox Code Playgroud)
在你的RowDataBound事件中绑定你的下拉列表GridView.现在你的代码应该是::
protected void MyGridView_RowDataBound( object sender, GridViewRowEventArgs e)
{
if(MyGridView.EditIndex == e.Row.RowIndex ) //GET THE ROW TO BE EDITED
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlRole = (DropDownList)e.Row.FindControl("ddlRole");
// Rest of Code
}
if (e.Row.RowType == DataControlRowType.Footer)
{
DropDownList ddlFRRole = (DropDownList)e.Row.FindControl("ddlFRRole");
// Rest of code
}
}
Run Code Online (Sandbox Code Playgroud)
另一种选择是使用以下条件来检查正在编辑的行::
if ((e.Row.RowState & DataControlRowState.Edit) > 0)
Run Code Online (Sandbox Code Playgroud)
或等效:: if (e.Row.RowState == DataControlRowState.Edit)