在父网格视图内的webuser控件中嵌套gridview / formview

时间:2009-12-09 10:35:58

标签: asp.net gridview

我正在为我们的人力资源部门开发一个ASP.net 2网站,其中首页有一个我们所有部门的薪酬等级矩阵,每个单元格中的链接指向该部门的所有工作。 这些链接会为您提供一个动态填充网格视图的页面,因为每个部门都有不同数量的团队,例如财务有一个团队,IT有四个。每个单元格都插入了一个webuser控件。 用户控件有一个sql数据源,提取所有作业标题和主键,使用链接按钮来填充表单视图,其文本值绑定到作业标题。 (我正在使用usercontrol,因为此页面还将用于显示部门范围内所有角色的搜索结果,并且行数不同)。

我已经把所有东西都很好地展示了,但是当我点击链接按钮时,不是运行我放入Click事件的代码,而是在不发送任何事件的情况下回发页面。

环顾四周,看起来我必须在某处添加一个加法器线,但我不确定在哪里,有人能指点我吗? (请相当简单,我还没有ASP的经验,而且它正在使用它。我也使用VB但是C#不是问题)

这就是我将控件插入父网格的方式,我是否错过了任何明显的内容?

        For row As Int16 = 0 To dgvRoleGrid.Rows.Count - 1
            tempwuc = New UserControl
            tempwuc = LoadControl("wucRoleList.ascx")
            tempwuc.ID = "wucRoleList" & col.ToString
            tempwuc.EnableViewState = True
            dgvRoleGrid.Rows(row).Cells(col).Controls.Add(tempwuc)
            CType(dgvRoleGrid.Rows(row).FindControl(tempwuc.ID), wucRoleList).specialtyid = specid
            CType(dgvRoleGrid.Rows(row).FindControl(tempwuc.ID), wucRoleList).bandid = dgvRoleGrid.DataKeys(row)(0)
            CType(dgvRoleGrid.Rows(row).FindControl(tempwuc.ID), wucRoleList).familyid = Session("familyid")


        Next

2 个答案:

答案 0 :(得分:0)

很难说没有查看更多代码,但是在转发器中没有从控件接收事件的最常见原因是您重新绑定数据而不是依赖于ViewState。你的代码看起来像这样:

public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if(!Page.IsPostBack)  // <--- YOU REALLY NEED THIS!
        {
            DoDataBinding();
        }

    }
}

您是否错过了IsPostBack支票?另外......如果你已经掌握了控制权,你为什么要使用FindControl?声明/加载控件时,转换为适当的类型。

答案 1 :(得分:0)

我这样做的原因是我对这一切都很陌生,用一些看起来有用的东西来推动它;在我面临的最后期限之前,我没有时间找到最优雅的解决方案,只要它稳定且有效,就可以了。

有一个ispostback检查,它不会在回发时重新绑定数据源。

我通过使用treeviews解决了这个问题,使用数据绑定事件来修改回发URL以包含值作为参数,但我仍然想知道如何使其正常工作。