私はこの質問を検索しようとしましたが、たくさんの結果が出てきましたが、正確には私が得ているものではないので、ここに行きます:
単純なGridViewコントロールがあり、送信されたら子コントロールの値にアクセスしたい
私はこれをやっています:
<asp:GridView ID="gvQuery" runat="server" GridLines="None" CellPadding="5" CellSpacing="5"
OnRowDataBound="gvQuery_RowDataBound" ShowHeader="False" AutoGenerateColumns="False">
<Columns>
<asp:TemplateField ItemStyle-Width="20px">
<ItemTemplate>
<asp:CheckBox ID="chkActive" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:BoundField DataField="Description" />
<asp:TemplateField>
<ItemTemplate>
<asp:DropDownList ID="ddlCondition" runat="server" />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField>
<ItemTemplate>
<asp:TextBox ID="txtField1" runat="server" />
<span class="text2">and <asp:TextBox ID="txtField2" runat="server" /></span>
<asp:HiddenField ID="hfFieldName" runat="server" Value='<%# Eval("InternalName") %>' />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:Button runat="server" ID="btnSearch" Text=" Search "
onclick="btnSearch_Click" />
次に、btnSearch_Clickイベントで通常のループが発生します
foreach (GridViewRow gvr in gvQuery.Rows)
{
if (gvr.RowType == DataControlRowType.DataRow)
{
CheckBox ch = gvr.FindControl("chkActive") as CheckBox;
DropDownList dd = gvr.FindControl("ddlCondition") as DropDownList;
TextBox t1 = gvr.FindControl("txtField1") as TextBox;
TextBox t2 = gvr.FindControl("txtField2") as TextBox;
HiddenField hf = gvr.FindControl("hfFieldName") as HiddenField;
if (ch.Checked)
{
SearchResultField srf = new SearchResultField();
Field field = fields.Find(x => x.Name == hf.Value);
srf.Name = field.Name;
srf.Operator = dd.SelectedValue;
srf.Owner = field.WhereOwner;
srf.Param1 = t1.Text;
srf.Param2 = t2.Text;
srf.Type = field.FieldType;
sr.Fields.Add(srf);
}
}
}
問題は、チェックボックスをチェックしても、チェックボックスが常にチェックされている=falseであるということです。
投稿値を取得するには、何をする必要がありますか?クリックすると、グリッドで行われたすべての操作が完全に失われ、コントロールが空になります。
私のaspxページで直接私は持っています:
<%@ Page
Title=""
Language="C#"
MasterPageFile="~/3Rows.master"
AutoEventWireup="true"
ValidateRequest="false"
CodeFile="Default.aspx.cs"
Inherits="_Default" %>
私はこの振る舞いが機能しているプロジェクトを持っていますが、なぜこの単純なページにこれがあるのか理解できません。
誰か手がかりがありますか?
ありがとうございました。