2012-04-23 70 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

相關問題