0

チェックボックスとラジオボタンリストを備えたグリッドビュー(asp.net)があります。このグリッドビューの上に、ユーザーがグリッドビュー内のすべての選択項目を特定の値に設定できるボタンがあります。選択されたということは、グリッドビュー内にあるチェックボックスがチェックされているということです。このグリッドビューは更新パネル内にあり、これが問題の原因かどうかはわかりませんが、これが私の問題です。

私が言ったグリッドビューには、次のようなチェックボックスがあります。

 <ItemTemplate>
  <asp:CheckBox ID="chkSelector" runat="server" 
    ToolTip="Select row?" />
 </ItemTemplate>

そして、次のようなラジオボタンのリスト:

 <asp:RadioButtonList ToolTip="Please provide an answer to the method." AutoPostBack="true" RepeatDirection="Horizontal" ID="rbAnswer" runat="server" SelectedValue='<%# DataBinder.Eval(Container, "DataItem.AnswerID")%>' OnSelectedIndexChanged="rbAnswer_SelectedIndexChanged">
                                    <asp:ListItem Text="Yes" Value="Yes" style="color:green;"></asp:ListItem>
                                    <asp:ListItem Text="No" Value="No" style="color:red;"></asp:ListItem>
                                    <asp:ListItem Text="N/A" Value="N/A" style="color:gray;"></asp:ListItem>
                                    <asp:ListItem Value="" Text="" style="display: none" />
                                </asp:RadioButtonList>

チェックボックスをオンにすると (複数のチェックボックス (グリッド内の行項目) を選択できます)、このボタンをクリックします。このボタンは、次のような効果をもたらします。

foreach (GridViewRow Row in this.gvLineItems.Rows)
                {
                    CheckBox cb = (CheckBox)Row.FindControl("chkSelector");
                    Label id = (Label)Row.FindControl("lblID");
                    if (cb != null && cb.Checked)
                    {
                        long lID = Convert.ToInt32(gvLineItems.DataKeys[Row.RowIndex].Value);
                        RadioButtonList rbl = (RadioButtonList)Row.FindControl("rbAnswer");

                        rbl.Items.FindByText("N/A").Selected = true;
                    }
                }

つまり、グリッドビュー内のすべてのアイテムをループします。項目がチェックされている場合 (chkSelector = true)、ラジオボタン リストの回答が「N/A」に設定されます。コードをデバッグすると、答えが正しく設定されていることがわかりますが、メソッドが完了すると、ユーザー インターフェイスに結果が表示されません。答えが N/A に設定されていないことを意味します。元の状態を維持しているだけです...

なぜこれが起こっているのか誰にも分かりますか?私はこれに updatepanel を使用しているので、それが理由かどうかはわかりません???

4

1 に答える 1

0
<asp:ListItem Text="N/A" Value="N/A" style="color:gray;"></asp:ListItem>

for (int i = 0; i < gvLineItems.Rows.Count; i++)
{   
 CheckBox cb = (CheckBox)gvLineItems.Row[i].FindControl("chkSelector");   
 RadioButtonList rbl = (RadioButtonList)gvLineItems.Row[i].FindControl("rbAnswer");
 if(cb.checked == true)
{
    rbl.SelectedValue = "N/A";
}
}
于 2012-07-31T14:28:42.153 に答える