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);
}
Он работал. Спасибо. – vladmateinfo
Не забудьте принять ответ. – dario