Gridview内部的RadiobuttonList更新但没有显示更新?

时间:2012-07-31 13:46:23

标签: asp.net updatepanel

我有一个带有复选框和radiobuttonlist的gridview(asp.net)。 在这个gridview上方,我有一个按钮,允许用户设置所有SELECTED项目 在gridview中的特定值。我选择的意思是检查gridview内的复选框。这个gridview位于更新面板内,我不知道这是否是我遇到问题的原因,但这是我的问题。

我说的gridview有一个像这样的复选框:

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

像这样的radiobutton列表:

 <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;
                    }
                }

这就是遍历gridview中的所有项目。如果选中该项(chkSelector = true),则将radiobutton list answer设置为“N / A”。我调试代码,我可以看到答案设置正确,但是当我的方法完成后,用户界面不会显示结果。意思是答案从未设置为N / A.它只保持其原始状态......

有谁知道为什么会这样?我正在使用这个更新面板,所以我不确定这是否是原因 ???

1 个答案:

答案 0 :(得分: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";
}
}