【问题标题】:Which gridview event to use to add items to the dropdownlist used in the edit template?使用哪个 gridview 事件将项目添加到编辑模板中使用的下拉列表?
【发布时间】:2010-10-07 13:51:33
【问题描述】:

我想在编辑网格视图时在下拉列表中显示不同的值,具体取决于登录的用户。例如...

该官员将看到“由官员批准”状态。 导演会看到“导演批准”状态

我正在尝试以编程方式将这些添加到我的 gridview (approvalsGrid) 的编辑模板中的下拉列表中。这是我的代码:

   Protected Sub ApprovalsGrid_RowUpdating(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewUpdateEventArgs) Handles ApprovalsGrid.RowUpdating
        Dim ApprovalEditDD As DropDownList = CType(ApprovalsGrid.Rows(ApprovalsGrid.EditIndex).FindControl("ApprovalEdit"), DropDownList)
        If User.Identity.Name = "officer" Then
            ApprovalEditDD.Items.Add("Approved by Officer")
        End If
    End Sub

我没有收到任何错误。但是得到一个没有项目的空下拉列表。我是否使用了正确的事件?

【问题讨论】:

    标签: asp.net vb.net events gridview drop-down-menu


    【解决方案1】:

    为什么不试试这个

    <script runat=server>
        string GetApprovedBy()
        {
            if (User.Identity.Name == "officer")
            {
                return "Approved by Officer";
            }
            else if(User.Identity.Name == "some other name")
            {
                return "something else";
            }
            else return string.Empty;
        } 
    </script>
    <asp:GridView runat="server">
        <Columns>
            <asp:TemplateField>
                <EditItemTemplate>
                    <asp:DropDownList runat="server">
                        <asp:ListItem Text='<%= GetApprovedBy() %>' />
                    </asp:DropDownList>
                </EditItemTemplate>
            </asp:TemplateField>
        </Columns>
    </asp:GridView>
    

    如果每个用户类型都有一个关联的下拉项,这当然有效。这符合您的需求吗?

    【讨论】:

    • 这听起来是个不错的解决方案。除非我尝试一下,否则我会得到“在这种情况下不支持代码块”。然后我尝试在代码隐藏中进行处理,并将结果输出为同样不起作用的文字或变量。
    • 我刚刚将此代码复制并粘贴到一个 .aspx 页面中,页面显示没有任何错误,您是否复制了这个确切的文本?你什么时候得到这个异常?
    【解决方案2】:

    试试这个事件:ApprovalsGrid_RowEditing 而不是 ApprovalsGrid_RowUpdating。 GridView 事件 RowUpdating 在用户向数据源提交更新时触发,但在这些更新实际发生之前(在更新发生后触发 RowUpdated)。 RowEditing 在 GridView 进入编辑模式时触发,这似乎是尝试绑定下拉列表的合适位置。仍然要小心 PostBacks 和类似的东西,以确保您在列表中的选项保留在那里,因为我还没有设置整个过程来尝试它。

    另外还有一个MSDN link,它解释了所有不同的 GridView 事件(有很多)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多