私はこれをStackOverflowや他のサイトで探してみましたが、問題と一致するものは見つかりませんでした。基本的に、私はドロップダウンメニューと行に含まれているテキストボックスを持つグリッドビューを持っています。ユーザーはドロップダウンからオプションを選択する必要があり、選択したオプションによっては、同じ行のテキストボックスにデータを追加する必要がある場合もあります。これの一部として、完了していないフィールドについてユーザーに警告するための検証を実行したいと思いますが、可能であればasp.net C#で試してみたい(JavaScriptやJQueryなどを使用しないでそれを避けることができます)。GridView内のテキストボックスとドロップダウンを検証します
ドロップダウンが選択されていないか、テキストが入力されていないと、グリッドビューは検証されますが、1行しか表示されていなくてもすべての行に対してエラーメッセージが表示されます間違っていますが、私は検証メッセージが表示されない行にのみ表示されるようにしたいのです。
私のコードは次のとおりです。
<asp:UpdatePanel ID="upCurrentServicesGrid" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:GridView ID="grdviewCurrentSystems" CssClass="table-data currentSystemTable" UseAccessibleHeader="true" AutoGenerateColumns="false" runat="server">
<Columns>
<asp:BoundField DataField="systemName" HeaderText="Service" ItemStyle-Width="10%"/>
<asp:TemplateField HeaderText="Status" ItemStyle-Width="39%">
<ItemTemplate>
<asp:DropDownList ID="aspdropSystemStatus" CausesValidation="false" runat="server" />
<div style="display:none">
<asp:TextBox ID="RowId" runat="server" Text='<%# Eval("id") %>' />
</div>
<div style="display:none">
<asp:TextBox ID="SelectedVal" runat="server" Text='<%# Eval("systemStatus") %>' />
</div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Further information" ItemStyle-Width="50%">
<ItemTemplate>
<div>
<asp:TextBox ID="txtSystemStatusInfo" TextMode="MultiLine" MaxLength="300" CssClass="textarea1" runat="server" Text='<%# Eval("systemInformation") %>' />
<asp:CustomValidator
CssClass="CustomValidator1"
OnServerValidate="grdviewFurtherInfo_Validate"
Display="Dynamic"
runat="server"
ValidationGroup="valgrpLocal">
<asp:ValidationMessageLocal
CssClass="aspvalmsgLocal"
ID="aspvalSystemStatus"
Title="Service statuses"
TextPassed=""
TextFailed="Check Status or Further Information fields"
runat="server" />
</asp:CustomValidator>
</div>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Delete" ItemStyle-HorizontalAlign="Center" ItemStyle-VerticalAlign="Middle">
<ItemTemplate>
<div>
<asp:LinkButton ID="lnkbtnDelSystem" CausesValidation="false" OnClick="lnkbtnDelSystem_Click" OnClientClick="return confirmDelete(this.id); return false;" CommandArgument='<%# Eval("id") %>' runat="server">
<span class="btn btn-small btn-spinner btn-grid">X</span>
</asp:LinkButton>
</div>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</ContentTemplate>
</asp:UpdatePanel>
そして背後に私のコードは次のとおりです。
protected void grdviewFurtherInfo_Validate(object sender, ServerValidateEventArgs e)
{
bool valid = true;
foreach (GridViewRow row in grdviewCurrentSystems.Rows)
{
usercontrols_asp_formctl_dropdownlist aspDrop = (usercontrols_asp_formctl_dropdownlist)row.FindControl("aspdropSystemStatus");
usercontrols_asp_formctl_textbox aspTxt = (usercontrols_asp_formctl_textbox)row.FindControl("txtSystemStatusInfo");
if (aspDrop.SelectedValue == "")
{
valid = false;
}
else if (aspDrop.SelectedValue != "1" && string.IsNullOrEmpty(aspTxt.Text))
{
valid = false;
}
e.IsValid = valid;
}
}
誰がアドバイスしてくださいことはできますか?
ありがとうございました! :)
このリンクは私にとってはうまく機能していません - 間違いなく生きていますか? – chesh78
今すぐ確認 - http://www.aspsnippets.com/Articles/Validate-only-certain-選択 - グリッドビュー - ロー - コントロール - 類似 - テキストボックス - 使用--ASPNet-Validators.aspx –