Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# gridview不使用sql检查重复项_C#_Asp.net_Gridview_Foreach_Duplicates - Fatal编程技术网

C# gridview不使用sql检查重复项

C# gridview不使用sql检查重复项,c#,asp.net,gridview,foreach,duplicates,C#,Asp.net,Gridview,Foreach,Duplicates,我有一个密码: foreach (GridViewRow dr in gvCategories.Rows)<br/> { <br/> if (dr.Cells[0].Text == txtEnterCategory.Text.Trim())<br/> <br/> isError=true; <br/> <br/> } 在ascx.cs中: 由于在最左边的列中有一个包含标签的Tem

我有一个密码:

foreach (GridViewRow dr in gvCategories.Rows)<br/>
{  
   <br/>
   if (dr.Cells[0].Text == txtEnterCategory.Text.Trim())<br/>
   <br/>
    isError=true;
   <br/>
   <br/> 
}
在ascx.cs中:


由于在最左边的列中有一个包含标签的TemplateField,而不是BoundField,因此可以按如下方式获取值:

foreach (GridViewRow dr in gvCategories.Rows)
{
    Label l = (Label)dr.Cells[0].Controls[1];

    if (l.Text.Trim() == txtEnterCategory.Text.Trim())
    {
        lblErrorMessage.Text = "This category already exits. Please enter a new category!";
        lblErrorMessage.Visible = true;

        isError=true;
    }
不要问我为什么它是控件[1],但它是。TemplateField的ItemTemplate中的每个控件似乎都创建了一对控件,因此,例如,如果您有:

<asp:TemplateField>
    <ItemTemplate>
        <asp:TextBox ID="txtFoo" runat="server" />
        <asp:TextBox ID="txtBar" runat="server" />
    </ItemTemplate>
</asp:TemplateField>


txtFoo将位于控件[1],txtBar将位于控件[3]。

在什么事件上运行该代码?添加类别后单击按钮可以看到gvCategories的ASPX标记?如果在最左边的列中有一个按钮,你会看到这种行为。我实际上希望看到标签的内容。实际上,它是标签,当你点击编辑时,它会变成texbox。因此,现在出现强制转换错误:无法将类型为“System.Web.UI.WebControls.Label”的对象强制转换为类型为“System.Web.UI.WebControls.TextBox”。请尝试标签l=(Label)dr.Cells[0]。控件[1];相反?太好了,我很高兴它成功了:)我将编辑答案,以反映这样一个事实,即您在那里有一个标签,而不是一个文本框。
foreach (GridViewRow dr in gvCategories.Rows)
{
    Label l = (Label)dr.Cells[0].Controls[1];

    if (l.Text.Trim() == txtEnterCategory.Text.Trim())
    {
        lblErrorMessage.Text = "This category already exits. Please enter a new category!";
        lblErrorMessage.Visible = true;

        isError=true;
    }
<asp:TemplateField>
    <ItemTemplate>
        <asp:TextBox ID="txtFoo" runat="server" />
        <asp:TextBox ID="txtBar" runat="server" />
    </ItemTemplate>
</asp:TemplateField>