加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 将下拉列表绑定到gridview中的editItemTemplate和foo

发布时间:2020-12-16 06:27:23 所属栏目:asp.Net 来源:网络整理
导读:我有一个网格,我尝试将下拉列表绑定到FooterTemplate和EdiItemTemplate. asp:TemplateField HeaderText="Role" SortExpression="Role" HeaderStyle Width="100px" HorizontalAlign="Center" Wrap="False"/HeaderStyle EditItemTemplate asp:DropDownList ID=
我有一个网格,我尝试将下拉列表绑定到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>

我使用此代码,没有运气.我无法将值绑定到下拉列表.如果我错了,任何人都可以纠正我吗?

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

        }
    }

解决方法

您应首先检查并比较RowIndex与要编辑的GridView的EditIndex,并将整个代码绑定到下拉列表中.

此外,要在页脚中查找下拉列表,您需要使用条件:

if (e.Row.RowType == DataControlRowType.Footer)

并且,用于连续查找下拉列表使用

if (e.Row.RowType == DataControlRowType.DataRow)

将您的Dropdown绑定在GridView的RowDataBound事件中.
现在你的代码应该是::

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

另一种选择是使用以下条件来检查正在编辑的行::

if ((e.Row.RowState & DataControlRowState.Edit) > 0)

或等效:: if(e.Row.RowState == DataControlRowState.Edit)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读