首页 > 解决方案 > 检查gridview控件内下拉列表中的重复值

问题描述

我有一个带有gridview控件的向导控件,在gridview中我有下拉列表和标签控件作为模板列。我想检查下拉列表中的任何重复值,如果找到,显示错误消息并且不想移动到向导控件中的下一步。到目前为止,我将值存储在一个数组中并检查重复条目,但我不知道如何禁用向导控件中下一个按钮的回发

在 rowdatabound 事件中

        foreach (GridViewRow row in GridView1.Rows)
        {
            string s = string.Empty;

            if ((row.FindControl("LCSCD") as Label).Text != "FL")
            {
                if (((DropDownList)row.FindControl("DSBCD")).Visible == false)
                {
                    s = ((Label)row.FindControl("LSBCD")).Text.ToString().Substring(0, ((Label)row.FindControl("LSBCD")).Text.ToString().IndexOf(" "));
                    sarray.Add(s);
                }
                else
                {
                    s = ((DropDownList)row.FindControl("DSBCD")).SelectedItem.Value;
                    sarray.Add(s);
                }
        }

        if (sarray.Distinct().Count() != sarray.Count())
        {

        }
        else
        {

        }

请在这方面帮助我谢谢

标签: asp.netgridviewdrop-down-menuduplicates

解决方案


您必须做的第一件事是找到带有薄网格视图的向导控件。您可以通过以下方式执行此操作,或者

yourGridViewID.TemplateControl.FindControl("wizardcontrolname")

在您的向导控件中,为下一步指定一个 ID,这样您就可以操作向导步骤。

为了操作 Next 按钮(实际上称为 Step),您必须使用 Wizard Control 中的 FindControl 方法,以便您可以找到向导步骤(显示为带有文本“Next”的按钮),并根据您的条件启用或禁用它或使其可见或不可见,具体取决于下拉列表的值。

这是我快速编写的基于下拉列表中所选项目的一些快速代码:

Protected Sub ddl_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ddl.SelectedIndexChanged
    Dim wStep As WizardStep = CType(Wizard1.FindControl("next"), WizardStep)

    If ddl.SelectedValue = 0 Then
        wStep.TemplateControl.Visible = False
        MsgBox("Not Allowed")
    Else
        wStep.Visible = True
    End If
End Sub

通过两个控件需要大量挖掘,但可以完成。


推荐阅读