如题,相关代码如下:
test.aspx.cs
                  private void Page_Load(object sender, System.EventArgs e)
{
if(!IsPostBack){
ds = (new ResearchRules()).GetResearch(_sdefault);
         this.researRepeater.DataSource = ds;
         this.researRepeater.DataBind();                   }
}
                  // 按钮触发事件
                  private void researRepeater_ItemCommand
                  (objectsource,System.Web.UI.WebControls.RepeaterCommandEventArgs e)
{
                           RadioButtonList rbl = (RadioButtonList)e.Item.FindControl
                           ("researmsgRBL");
                           this.Response.Write("<script>alert('您选择的是:" + 
                           rbl.SelectedItem.Text + "')</script>");
                   }
这段代码问题出在哪,以前也遇到过,但一时想不起来了,请大家帮忙看看!
感谢!

解决方案 »

  1.   

    这个Repeater是放在一个用户控件里面的,这应该不会有问题吧!
      

  2.   

    private void researRepeater_ItemCommand
    改成
     private void researRepeater_ItemDataBound
    旧可以了
      

  3.   

    ItemDataBound事件应该是在Page_Load()之前触发的数据初始化事件吧?
    我现在的问题是,数据可以绑定在Repeater中的RadioButtonList,但触发
    了按钮的单击事件后,所取得的都是RadioButtonList中第一项的值~~~~
    按钮也是放置在Repeater中的!
    Repeater中触发的按钮事件应该用Repeater的ItemCommand()来扑抓的吧?Repeater的数据绑定我也是放在if(!IsPostBack)里面的,但为什么总是
    取得第一项的值?
      

  4.   

    aspx文件
    <asp:Repeater id="Repeater1" runat="server">
    <ItemTemplate>
    <table cellSpacing="0" cellPadding="0" width="100%" border="0">
    <tr>
    <td align="center"> <asp:radiobuttonlist id="msgRBL" runat="server" CssClass="txt" DataSource='<%# WebControlsBind(DataBinder.Eval(Container.DataItem,"Content").ToString(),DataBinder.Eval(Container.DataItem,"Number").ToString()) %>' DataTextField="message" DataValueField="number" > </asp:radiobuttonlist>
    </td>
    </tr>
    <tr>
    <td>
    <asp:imagebutton id="researBtn" CommandName="ReBtn" runat="server" ImageUrl="../images/tp.gif" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"PKID") %>' >
    </asp:imagebutton>
    </td>
    <td width="20">&nbsp;</td>
    <td>
    <asp:imagebutton id="resultBtn" CommandName="ResultBtn" runat="server" ImageUrl="../images/jg.gif" CommandArgument='<%# DataBinder.Eval(Container.DataItem,"PKID") %>' >
    </asp:imagebutton>
    </td>
    </tr>
    </table>
    </ItemTemplate>
    </asp:Repeater>aspx.cs
    Page_Load(){
      if(!IsPostBack){
        RepeaterDataBind();
      }
    }private void RepeaterDataBind(){
      ... code ...
      Repeater1.DataSource = DataSet1
      Repeater1.DataBind();
    }public DataTable RadioButtonListBind(string content,string number){
      ... code ...
      return datatable;
    }private void Repeater1_ItemCommand(object source, System.Web.UI.WebControls.RepeaterCommandEventArgs e){
    RadioButtonList rbl = (RadioButtonList)e.Item.FindControl("researmsgRBL");
    this.Response.Write("<script>alert('您选择的是:" + rbl.SelectedItem.Text + 
    " 它的值为:" +  rbl.SelectedValue + "')</script>");
    }单击按钮后,回返的都是第一项的值~~~~疑惑中??
    请高手帮看看问题出在什么地方~~~感谢!
      

  5.   

    <td align="center">
          <asp:radiobuttonlist id="msgRBL" runat="server" 
           SelectedIndex=<%#DataBinder.Eval(Container.DataItem,"number")%>
           CssClass="txt" 
           DataSource='<%# WebControlsBind(DataBinder.Eval(Container.DataItem,"Content").ToString(),DataBinder.Eval(Container.DataItem,"Number").ToString()) %>' 
          DataTextField="message" 
          DataValueField="number" >
          </asp:radiobuttonlist>
    </td>加这句
    SelectedIndex=<%#DataBinder.Eval(Container.DataItem,"number")%>