2012-04-23 75 views
1

我有一个DropwDownlist控制和很多其他的文本框的文本输入等,用户可以多行添加到网格中的一个asp.net GridView和改变现有数据等的DropDownList的RequiredFieldValidator在GridView中

我需要RequiredFieldValidator仅用于当前正在访问的行。我已经将InitialValue设置为正确的值,并且我接受验证器触发,我遇到的问题是它会触发每一行而不是当前正在处理的行。

任何想法?

我在GridView的下拉下验证:

<asp:RequiredFieldValidator ID="rfRoles" runat="server" ErrorMessage="Role Required" 
    ControlToValidate="ddlRole" ValidationGroup=roles InitialValue="-1" Display="Dynamic" SetFocusOnError="true" Text="*"> 
</asp:RequiredFieldValidator> 
<asp:ValidationSummary ID="validateRole" runat="server" ShowMessageBox="True" ShowSummary="false" ValidationGroup="roles" /> 

我保存在网格按钮:

<EditItemTemplate> 
<asp:LinkButton ID="lnkSave" runat="server" Text="Save" CommandName="Update" CausesValidation="true" ForeColor="#AE0917" ValidationGroup="roles" Font-Bold="true"></asp:LinkButton></EditItemTemplate> 

回答

2

我相信你可以做这样的事情:

<EditItemTemplate> 
<asp:RequiredFieldValidator ID="rfRoles" runat="server" ErrorMessage="Role Required" 
    ControlToValidate="ddlRole" ValidationGroup="roles<%# Eval("Id") %>" InitialValue="-1" Display="Dynamic" SetFocusOnError="true" Text="*"> 
</asp:RequiredFieldValidator> 
<asp:ValidationSummary ID="validateRole" runat="server" ShowMessageBox="True" ShowSummary="false" ValidationGroup="roles<%# Eval("Id") %>" /> 

<asp:LinkButton ID="lnkSave" runat="server" Text="Save" CommandName="Update" CausesValidation="true" ForeColor="#AE0917"ValidationGroup="roles<%# Eval("Id") %>" Font-Bold="true"></asp:LinkButton> 
</EditItemTemplate> 

其中“Id”是数据行的标识符,例如您正在编辑的数据行的主键。这样,您可以为每一行分配一个独特的验证组。

P.S.语法可能需要一点工作,我从内存中完成。

+1

我找到了正确的语法,通过这篇文章为我工作:http://stackoverflow.com/questions/6012655/how-to-use-data-bound-value-to-form-unique-identifier-for-项目控制 因此,指出所有!非常感谢,我真的很感激! – Melanie 2012-04-23 17:02:26

相关问题