[求助在线等]GridView的EditItemTemplate中的控件,在行绑定事件中找不到?

yixian2007 2014-09-21 07:03:16
前台如下

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" DataKeyNames="UserID" OnRowDataBound="gv_RowDataBound"
OnRowEditing="gv_RowEditing" OnRowCancelingEdit="gv_RowCancelingEdit" OnRowUpdating="gv_RowUpdating" >
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="UserID" HeaderText="登陆名" ReadOnly="true" />
<asp:TemplateField HeaderText="密码">
<EditItemTemplate>
<asp:TextBox ID="tbPwd" runat="server" Text='<%# Bind("UserPwd") %>' Width="300px"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lbPwd" runat="server" Text='<%# Bind("UserPwd") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="名字">
<EditItemTemplate>
<asp:TextBox ID="tbName" runat="server" Text='<%# Bind("UserName") %>' Width="300px"></asp:TextBox>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lbName" runat="server" Text='<%# Bind("UserName") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="学院">
<EditItemTemplate>
<asp:DropDownList ID="ddlDeptCur" runat="server"></asp:DropDownList>
</EditItemTemplate>
<ItemTemplate>
<asp:Label ID="lbDeptName" runat="server" Text='<%# Bind("DeptID") %>'></asp:Label>
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="RoleID" HeaderText="角色" ReadOnly="true" />
</Columns>
</asp:GridView>


后台事件如下:

protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
DropDownList ddlDeptCur = (DropDownList)e.Row.FindControl("ddlDeptCur");
ddlDeptCur.DataValueField = "DeptID";
ddlDeptCur.DataTextField = "DeptName";
ddlDeptCur.DataSource = deptList.ToList();
ddlDeptCur.DataBind();
ddlDeptCur.SelectedValue = DataBinder.Eval(e.Row.DataItem, "DeptID").ToString();
}
}


奇怪的很,ddlDeptCur 控件总是为空,找不到控件?难道在EditItemTemplate不是这样找的吗?
...全文
330 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
yixian2007 2014-09-27
  • 打赏
  • 举报
回复
必须重新绑定GridView,这样后面的绑定才有效。
yixian2007 2014-09-27
  • 打赏
  • 举报
回复
已经解决,解决方法是在RowEditing事件中绑定,但在绑定控件之前,还要先绑定一个gridview,这样才行。 例子如下:

protected void gv_RowEditing(object sender, GridViewEditEventArgs e)
    {
        gv.EditIndex = e.NewEditIndex;
        BindData();
        DropDownList ddlDeptCur = (DropDownList)gv.Rows[e.NewEditIndex].FindControl("ddlDeptCur");
        //res_Dept deptAll = new res_Dept();
        //deptAll.DeptID = "00";
        //deptAll.DeptName = "全部";
        //List<res_Dept> delist = deptList.ToList();
        //delist.Insert(0, deptAll);
        ddlDeptCur.DataValueField = "DeptID";
        ddlDeptCur.DataTextField = "DeptName";
        ddlDeptCur.DataSource = deptList.ToList();
        ddlDeptCur.DataBind();
        ddlDeptCur.SelectedValue = gv.DataKeys[e.NewEditIndex].Values[1].ToString();
        
    }
yixian2007 2014-09-24
  • 打赏
  • 举报
回复
没人理我,帮忙顶起来啊。
Hello World, 2014-09-24
  • 打赏
  • 举报
回复
<EditItemTemplate>里面的控件只在编辑状态时才会生成
rokerker 2014-09-24
  • 打赏
  • 举报
回复
首先 你确定后台能查到这个字段的值吗,DeptID。就是说页面展示的时候,对应的后台数据里面是不是包含了这个字段DeptID
yixian2007 2014-09-21
  • 打赏
  • 举报
回复

<asp:GridView ID="gv" runat="server" AutoGenerateColumns="False" DataKeyNames="UserID" OnRowDataBound="gv_RowDataBound"
            OnRowEditing="gv_RowEditing" OnRowCancelingEdit="gv_RowCancelingEdit"  OnRowUpdating="gv_RowUpdating" >
            <Columns>
                <asp:CommandField ShowEditButton="True" />
                 <asp:TemplateField HeaderText="学院">
                    <EditItemTemplate>
                        <asp:DropDownList ID="ddlDeptCur" runat="server"></asp:DropDownList>
                    </EditItemTemplate>
                    <ItemTemplate>
                        <asp:Label ID="lbDeptName" runat="server" Text='<%# Bind("DeptID") %>'></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
                <asp:BoundField DataField="RoleID" HeaderText="角色" ReadOnly="true" />
            </Columns>
        </asp:GridView>
这是前台, <EditItemTemplate> <asp:DropDownList ID="ddlDeptCur" runat="server"></asp:DropDownList> </EditItemTemplate> 在这里面,上面的可能不清楚,加了个颜色,结果显示不出来,哈哈。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧