gridview 验证中的文本框

Posted

技术标签:

【中文标题】gridview 验证中的文本框【英文标题】:Textboxes inside gridview validation 【发布时间】:2015-10-03 04:58:58 【问题描述】:

我有一个网格视图,其中有 100 行文本框。所有文本框都有相同的 id 'TxtEmpcode'。用户在 gridview 的某些行中输入数据。如何验证文本框,以便在文本框中仅输入一次员工代码。这是为了避免重复输入数据。假设用户输入员工代码“1234”,这在文本框的其他行中是不允许的。如果他们输入,则应显示一条消息“已输入员工代码”。

谁能告诉我如何做到这一点?

<asp:GridView ID="GridView2" runat="server" style="margin-left: 23px; margin-top: 11px;" Width="420px" CellPadding="4" AutoGenerateColumns="False" ForeColor="#333333" GridLines="None" Height="213px"  >
               <AlternatingRowStyle BackColor="White" />
             <Columns>
           
                <asp:TemplateField HeaderText="Employee Code">
            <ItemTemplate>
                <asp:TextBox ID="TxtEmpcode" runat="server" OnTextChanged="TxtId_TextChanged" AutoPostBack ="true"   ></asp:TextBox>  
            </ItemTemplate>

【问题讨论】:

你使用的asp.net框架是4.0还是更高? 是的...我使用的是 4.0 或更高版本。 【参考方案1】:

您可以根据需要使用它的逻辑。

<head>
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
</head>

<script>

    function IsValidTest(Control) 

        name = Control.name;

        var list = document.getElementById("TxtEmpcode");

        var contents = $("[id=TxtEmpcode]");

        var TextboxId = name;

        var Txtbox = document.getElementsByName(name);
        var TextboxValue = Txtbox[0].value;

        for (i = 0; i < contents.length; i++) 
         

            var currenttextboxName=contents[i].name;
            var currenttextboxValue=contents[i].value;


            //Compare currently changed value with existing values in other textboxes
            if (name != currenttextboxName && currenttextboxValue == TextboxValue)
            
                alert('Employee Code has already been entered');
                Txtbox[0].value = '';

                return false;
                    
        

        return true;
    

</script>

    <div>
        <asp:GridView ID="GridView2" runat="server" Style="margin-left: 23px; margin-top: 11px;"
            Width="420px" CellPadding="4" AutoGenerateColumns="False" ForeColor="#333333"
            GridLines="None" Height="213px">
            <AlternatingRowStyle BackColor="White" />
            <Columns>
                <asp:TemplateField HeaderText="Employee Code">
                    <ItemTemplate>
                        <asp:TextBox ID="TxtEmpcode" runat="server"  AutoPostBack="true" ClientIDMode="Static" onchange="javascript: return IsValidTest(this);"></asp:TextBox>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>        

    </div>
</asp:Content>

【讨论】:

我又遇到了一个问题。我已经为文本框编写了 Ontextchanged 函数。编写此 javascript 函数后不会触发。在文本框中输入员工代码时,其他员工相关信息将填充在其他只读文本框中。 在我的代码中 Ontextchanged 不存在..所以检查你的代码是否没有..如果是,请记住 Ontextchanged 只会被调用有效的非重复值......而且一切都很好检查是否有任何java脚本错误(使用开发者工具F12键) 同样在堆栈溢出站点中,通过支持或接受答案来感谢他人的努力总是很不错的。如果您认为这对您有帮助或将来会帮助其他人(总是接受最有效的答案)。 . :) 嗨,Sagar,甚至在你告诉我之前,我就赞成你的回答。但我是***的新手。它要求我获得至少 15 个声望才能投票。 @Vinay - 您可以接受答案。没有信誉标准,只需单击对勾,检查此链接 - meta.stackexchange.com/questions/5234/…

以上是关于gridview 验证中的文本框的主要内容,如果未能解决你的问题,请参考以下文章

在 asp.net 中处理 Gridview 控件中的文本框?

使用asp.net中的文本框进行Gridview过滤

使用javascript查找放置在gridview中的复选框和文本框

网格视图验证

jquery自动完成asp.net Gridview中的多个文本框

c# .net winform 在文本框里输入数据(用于查找的参数) 然后回车将gridview中的那条数据处于选中状态