2014-12-29 3 views
0

У меня есть gridview, и я пытаюсь создать нижний колонтитул. Введенные данные должны быть уникальными, поэтому я создал специальный валидатор. Проблема в том, что я не могу запустить валидатор, когда нажимаю кнопку linkbutton.CustomValidator не работает в gridview

 <asp:TemplateField HeaderText="id" SortExpression="id"> 
      <EditItemTemplate> 
       <asp:Label ID="Label1" runat="server" Text='<%# Eval("id") %>'></asp:Label> 
      </EditItemTemplate> 
      <ItemTemplate> 
       <asp:Label ID="Label1" runat="server" Text='<%# Bind("id") %>'></asp:Label> 
      </ItemTemplate> 
      <FooterTemplate> 
       <asp:LinkButton ID="LinkButtonInsert" runat="server" OnClick="updateData">Adauga</asp:LinkButton> 
      </FooterTemplate> 
     </asp:TemplateField> 
      <asp:TemplateField HeaderText="name" SortExpression="name"> 

     <asp:TemplateField HeaderText="name" SortExpression="name"> 
       <EditItemTemplate> 
        <asp:TextBox ID="TextBox1" runat="server" Text='<%# Bind("name") %>' ></asp:TextBox> 
       </EditItemTemplate> 
       <ItemTemplate> 
        <asp:LinkButton ID="LinkButton1" runat="server" Text='<%# Bind("name") %>' PostBackUrl='<%# "~/login.aspx?UserID=" + Eval("name") %>'> 
        </asp:LinkButton> 
       </ItemTemplate> 
       <FooterTemplate> 
        <asp:TextBox ID="TextBoxName" runat="server"></asp:TextBox> 
        <asp:RequiredFieldValidator id="RequiredFieldValidator" runat="server" controlToValidate="TextBoxName" Text ="*" ValidationGroup = "INSERT" 
         ErrorMessage="Introduceti numele categoriei" forecolor="red"></asp:RequiredFieldValidator> 
        <asp:CustomValidator ID="CustomValidatorText" runat="server" ErrorMessage="Exista deja categoria" controlToValidate="TextBoxName" ValidationGroup = "INSERT" 
        forecolor="red" OnServerValidate="CheckCategoryAvailability"></asp:CustomValidator> 
       </FooterTemplate> 
      </asp:TemplateField> 

Вот Backgroud код:

protected void CheckCategoryAvailability(object source, ServerValidateEventArgs args) 
    { 

     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString); 
     con.Open(); 
     string textBoxName = ((CustomValidator)source).ControlToValidate; 

     var textBox = ((CustomValidator)source).Parent.FindControl(textBoxName) as TextBox; 

     string txt = textBox.Text; 
     Response.Write(textBox.Text); 
     SqlCommand com = new SqlCommand("select count(*) from Chapter where name = '" + txt +"';", con); 
     Response.Write(com.ExecuteScalar()); 
     int temp = Int32.Parse(com.ExecuteScalar().ToString()); 
     if (temp == 1) 
     { 
      args.IsValid = false; 
     } 
     else 
     { 
      args.IsValid = true; 
     } 

    } 

    protected void updateData(object source, EventArgs args) 
    { 
     Response.Write(Page.IsValid); 
    } 

ответ

1

Вы должны поместить атрибут ValidationGroup также в LinkButton тег:

<asp:LinkButton ID="LinkButtonInsert" runat="server" OnClick="updateData" ValidationGroup="INSERT">Adauga</asp:LinkButton> 
+0

Он работал. Спасибо. – vladmateinfo

+0

Не забудьте принять ответ. – dario

Смежные вопросы