2014-12-29 2 views
0

저는 gridview를 가지고 있으며 삽입 꼬리말을 만들려고합니다. 삽입 된 데이터는 고유해야 사용자 정의 유효성 검사기를 만들 수 있습니다. 문제는 제가 linkbutton을 눌렀을 때 validator를 작동시킬 수 없다는 것입니다.CustomValidator가 gridview에서 실행되지 않았습니다.

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

당신은 LinkButton 태그도 ValidationGroup 속성을 배치 할 수 있습니다 : 그것은 일

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

 <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> 

다음은 배경에서 코드입니다. 고맙습니다. – vladmateinfo

+0

답변을 수락하는 것을 잊지 마십시오. – dario

관련 문제